Browse Source

MT#56447 support destroy method

Change-Id: I4fabc4505beaeb99a0b2e8ddb673f167d733f4d9
pull/1642/head
Richard Fuchs 3 years ago
parent
commit
c7114d8306
2 changed files with 57 additions and 0 deletions
  1. +25
    -0
      daemon/janus.c
  2. +32
    -0
      t/auto-daemon-tests-websocket.py

+ 25
- 0
daemon/janus.c View File

@ -1407,6 +1407,27 @@ const char *janus_detach(struct websocket_message *wm, JsonReader *reader, JsonB
} }
const char *janus_destroy(struct websocket_message *wm, JsonReader *reader, JsonBuilder *builder,
struct janus_session *session,
int *retcode)
{
*retcode = 458;
if (!session)
return "Session ID not found";
LOCK(&janus_lock);
struct janus_session *ht_session = NULL;
g_hash_table_steal_extended(janus_sessions, &session->id, NULL, (void **) &ht_session);
if (ht_session != session)
return "Sesssion ID not found"; // already removed/destroyed
obj_put(session);
return NULL;
}
const char *janus_message(struct websocket_message *wm, JsonReader *reader, JsonBuilder *builder, const char *janus_message(struct websocket_message *wm, JsonReader *reader, JsonBuilder *builder,
struct janus_session *session, struct janus_session *session,
const char *transaction, const char *transaction,
@ -1780,6 +1801,10 @@ static const char *websocket_janus_process_json(struct websocket_message *wm,
err = janus_detach(wm, reader, builder, session, handle_id, &retcode); err = janus_detach(wm, reader, builder, session, handle_id, &retcode);
break; break;
case CSH_LOOKUP("destroy"): // destroy session
err = janus_destroy(wm, reader, builder, session, &retcode);
break;
case CSH_LOOKUP("message"): case CSH_LOOKUP("message"):
err = janus_message(wm, reader, builder, session, transaction, handle_id, &success, err = janus_message(wm, reader, builder, session, transaction, handle_id, &success,
&retcode); &retcode);


+ 32
- 0
t/auto-daemon-tests-websocket.py View File

@ -309,6 +309,25 @@ class TestVideoroom(unittest.TestCase):
}, },
) )
def destroySession(self, token, session):
eventloop.run_until_complete(
testIOJanus(
self,
{
"janus": "destroy",
"session_id": session,
"token": token,
},
)
)
self.assertEqual(
self._res,
{
"janus": "success",
"session_id": session,
},
)
def closeConns(self): def closeConns(self):
eventloop.run_until_complete(close_ws(self)) eventloop.run_until_complete(close_ws(self))
@ -675,6 +694,8 @@ class TestVideoroom(unittest.TestCase):
}, },
) )
self.destroySession(token, session)
def testVideoroomWebRTCAlt(self): def testVideoroomWebRTCAlt(self):
# alternative usage: publisher == controller, no extra feed_id, no room specified # alternative usage: publisher == controller, no extra feed_id, no room specified
@ -967,6 +988,8 @@ class TestVideoroom(unittest.TestCase):
}, },
) )
self.destroySession(token, session)
def testVideoroomSDESDTLS(self): def testVideoroomSDESDTLS(self):
(token, session, control_handle, room) = self.startVideoroom() (token, session, control_handle, room) = self.startVideoroom()
@ -1067,6 +1090,7 @@ class TestVideoroom(unittest.TestCase):
) )
self.destroyVideoroom(token, session, control_handle, room) self.destroyVideoroom(token, session, control_handle, room)
self.destroySession(token, session)
def testVideoroomSDES(self): def testVideoroomSDES(self):
(token, session, control_handle, room) = self.startVideoroom() (token, session, control_handle, room) = self.startVideoroom()
@ -1164,6 +1188,7 @@ class TestVideoroom(unittest.TestCase):
) )
self.destroyVideoroom(token, session, control_handle, room) self.destroyVideoroom(token, session, control_handle, room)
self.destroySession(token, session)
def testVideoroomDTLS(self): def testVideoroomDTLS(self):
(token, session, control_handle, room) = self.startVideoroom() (token, session, control_handle, room) = self.startVideoroom()
@ -1263,6 +1288,7 @@ class TestVideoroom(unittest.TestCase):
) )
self.destroyVideoroom(token, session, control_handle, room) self.destroyVideoroom(token, session, control_handle, room)
self.destroySession(token, session)
def testVideoroomWebrtcup(self): def testVideoroomWebrtcup(self):
(token, session, control_handle, room) = self.startVideoroom() (token, session, control_handle, room) = self.startVideoroom()
@ -1388,6 +1414,7 @@ class TestVideoroom(unittest.TestCase):
) )
self.destroyVideoroom(token, session, control_handle, room) self.destroyVideoroom(token, session, control_handle, room)
self.destroySession(token, session)
pub_sock.close() pub_sock.close()
def testVideoroomWebRTCVideo(self): def testVideoroomWebRTCVideo(self):
@ -1783,6 +1810,7 @@ class TestVideoroom(unittest.TestCase):
) )
self.destroyVideoroom(token, session, control_handle, room) self.destroyVideoroom(token, session, control_handle, room)
self.destroySession(token, session)
def testVideoroomICE(self): def testVideoroomICE(self):
(token, session, control_handle, room) = self.startVideoroom() (token, session, control_handle, room) = self.startVideoroom()
@ -2096,6 +2124,7 @@ class TestVideoroom(unittest.TestCase):
self.assertEqual(self._res, {"janus": "ack", "session_id": session}) self.assertEqual(self._res, {"janus": "ack", "session_id": session})
self.destroyVideoroom(token, session, control_handle, room) self.destroyVideoroom(token, session, control_handle, room)
self.destroySession(token, session)
pub_sock.close() pub_sock.close()
sub_sock.close() sub_sock.close()
@ -2506,6 +2535,7 @@ class TestVideoroom(unittest.TestCase):
) )
self.destroyVideoroom(token, session, control_handle, room) self.destroyVideoroom(token, session, control_handle, room)
self.destroySession(token, session)
def testVideoroomMultiConn(self): def testVideoroomMultiConn(self):
(token, session_1, control_handle, room) = self.startVideoroom() (token, session_1, control_handle, room) = self.startVideoroom()
@ -2833,6 +2863,7 @@ class TestVideoroom(unittest.TestCase):
pub_sock_1.close() pub_sock_1.close()
pub_sock_2.close() pub_sock_2.close()
self.destroyVideoroom(token, session_1, control_handle, room) self.destroyVideoroom(token, session_1, control_handle, room)
self.destroySession(token, session_1)
def testVideoroomMute(self): def testVideoroomMute(self):
(token, session, control_handle, room) = self.startVideoroom() (token, session, control_handle, room) = self.startVideoroom()
@ -3320,6 +3351,7 @@ class TestVideoroom(unittest.TestCase):
) )
self.destroyVideoroom(token, session, control_handle, room) self.destroyVideoroom(token, session, control_handle, room)
self.destroySession(token, session)
pub_sock_audio.close() pub_sock_audio.close()
pub_sock_video.close() pub_sock_video.close()
sub_sock_audio.close() sub_sock_audio.close()


Loading…
Cancel
Save