[Pkg-voip-commits] [janus] 19/282: Updated code to reflect latest feedback
Jonas Smedegaard
dr at jones.dk
Wed Dec 20 21:53:24 UTC 2017
This is an automated email from the git hooks/post-receive script.
js pushed a commit to annotated tag debian/0.2.6-1
in repository janus.
commit 7af153d05dd21c39e85fdd6dffc960f60566f939
Author: Lorenzo Miniero <lminiero at gmail.com>
Date: Sat Mar 25 19:52:02 2017 +0100
Updated code to reflect latest feedback
---
plugins/janus_sipre.c | 80 +++++++++++++++++++++++++++++++--------------------
1 file changed, 49 insertions(+), 31 deletions(-)
diff --git a/plugins/janus_sipre.c b/plugins/janus_sipre.c
index 1d1d2f5..4410609 100644
--- a/plugins/janus_sipre.c
+++ b/plugins/janus_sipre.c
@@ -217,6 +217,7 @@ GThread *sipstack_thread = NULL;
/* Message queue */
typedef enum janus_sipre_mqueue_event {
+ janus_sipre_mqueue_event_do_init,
janus_sipre_mqueue_event_do_register,
/* TODO Add other events here */
janus_sipre_mqueue_event_do_exit
@@ -762,36 +763,19 @@ int janus_sipre_init(janus_callbacks *callback, const char *config_path) {
JANUS_LOG(LOG_ERR, "libre_init() failed: %d (%s)\n", err, strerror(err));
return -1;
}
- poll_method_set(poll_method_best());
err = sip_alloc(&sipstack, NULL, 32, 32, 32, JANUS_SIPRE_NAME, janus_sipre_cb_exit, NULL);
if(err) {
JANUS_LOG(LOG_ERR, "Failed to initialize libre SIP stack: %d (%s)\n", err, strerror(err));
return -1;
}
- struct sa laddr, laddrs;
- sa_set_str(&laddr, local_ip, 0);
- sa_set_str(&laddrs, local_ip, 0);
- err |= sip_transp_add(sipstack, SIP_TRANSP_UDP, &laddr);
- err |= sip_transp_add(sipstack, SIP_TRANSP_TCP, &laddr);
- if(err) {
- JANUS_LOG(LOG_ERR, "Failed to initialize libre SIP transports: %d (%s)\n", err, strerror(err));
- return -1;
- }
- err = tls_alloc(&tls, TLS_METHOD_SSLV23, NULL, NULL);
- err |= sip_transp_add(sipstack, SIP_TRANSP_TLS, &laddrs, tls);
- if(err) {
- mem_deref(sipstack);
- mem_deref(tls);
- JANUS_LOG(LOG_ERR, "Failed to initialize libre SIPS transports: %d (%s)\n", err, strerror(err));
- return -1;
- }
- mem_deref(tls);
err = mqueue_alloc(&mq, janus_sipre_mqueue_handler, NULL);
if(err) {
mem_deref(sipstack);
JANUS_LOG(LOG_ERR, "Failed to initialize message queue: %d (%s)\n", err, strerror(err));
return -1;
}
+ /* We initialize in the loop */
+ mqueue_push(mq, janus_sipre_mqueue_event_do_init, NULL);
sessions = g_hash_table_new(NULL, NULL);
callids = g_hash_table_new(g_str_hash, g_str_equal);
@@ -2783,13 +2767,26 @@ static void *janus_sipre_relay_thread(void *data) {
/* libre loop thread */
gpointer janus_sipre_stack_thread(gpointer user_data) {
- JANUS_LOG(LOG_FATAL, "Joining libre loop thread...\n");
+ JANUS_LOG(LOG_INFO, "Joining libre loop thread...\n");
+
+ /* Initialize this thread as a worker */
+ int err = 0;
+ err = re_thread_init();
+ if(err != 0) {
+ printf("re_thread_init failed: %d (%s)\n", err, strerror(err));
+ g_thread_unref(g_thread_self());
+ return NULL;
+ }
/* Enter loop */
- int err = re_main(NULL);
+ err = re_main(NULL);
if(err != 0) {
JANUS_LOG(LOG_ERR, "re_main() failed: %d (%s)\n", err, strerror(err));
}
- JANUS_LOG(LOG_FATAL, "Leaving libre loop thread...\n");
+
+ /* Done here */
+ JANUS_LOG(LOG_WARN, "Leaving libre loop thread...\n");
+ re_thread_close();
+
g_thread_unref(g_thread_self());
return NULL;
}
@@ -2904,15 +2901,35 @@ void janus_sipre_cb_exit(void *arg) {
/* Callback to implement SIP requests in the re_main loop thread */
void janus_sipre_mqueue_handler(int id, void *data, void *arg) {
- janus_sipre_mqueue_event event = (janus_sipre_mqueue_event)id;
- janus_sipre_session *session = (janus_sipre_session *)data;
- JANUS_LOG(LOG_INFO, "[SIPre-%s] event %d\n", session->account.username, id);
-
- int err = 0;
-
- switch(event) {
- case janus_sipre_mqueue_event_do_register:
- err = sipreg_register(&session->stack.reg, sipstack,
+ JANUS_LOG(LOG_FATAL, "janus_sipre_mqueue_handler: %d\n", id);
+ switch((janus_sipre_mqueue_event)id) {
+ case janus_sipre_mqueue_event_do_init: {
+ JANUS_LOG(LOG_INFO, "Initializing SIP transports\n");
+ struct sa laddr, laddrs;
+ sa_set_str(&laddr, local_ip, 0);
+ sa_set_str(&laddrs, local_ip, 0);
+ int err = 0;
+ err |= sip_transp_add(sipstack, SIP_TRANSP_UDP, &laddr);
+ err |= sip_transp_add(sipstack, SIP_TRANSP_TCP, &laddr);
+ if(err) {
+ JANUS_LOG(LOG_ERR, "Failed to initialize libre SIP transports: %d (%s)\n", err, strerror(err));
+ return;
+ }
+ err = tls_alloc(&tls, TLS_METHOD_SSLV23, NULL, NULL);
+ err |= sip_transp_add(sipstack, SIP_TRANSP_TLS, &laddrs, tls);
+ if(err) {
+ mem_deref(sipstack);
+ mem_deref(tls);
+ JANUS_LOG(LOG_ERR, "Failed to initialize libre SIPS transports: %d (%s)\n", err, strerror(err));
+ return;
+ }
+ mem_deref(tls);
+ break;
+ }
+ case janus_sipre_mqueue_event_do_register: {
+ janus_sipre_session *session = (janus_sipre_session *)data;
+ JANUS_LOG(LOG_INFO, "[SIPre-%s] Sending REGISTER\n", session->account.username);
+ int err = sipreg_register(&session->stack.reg, sipstack,
session->account.proxy,
session->account.identity, session->account.identity, 3600,
session->account.display_name ? session->account.display_name : session->account.username, NULL, 0, 0,
@@ -2923,6 +2940,7 @@ void janus_sipre_mqueue_handler(int id, void *data, void *arg) {
JANUS_LOG(LOG_ERR, "Error attempting to REGISTER...\n");
}
break;
+ }
case janus_sipre_mqueue_event_do_exit:
/* We're done, here, break the loop */
re_cancel();
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-voip/janus.git
More information about the Pkg-voip-commits
mailing list