From 22c43ec9e608f462eda5bff2bb27243da8157756 Mon Sep 17 00:00:00 2001 From: jpeeler Date: Thu, 15 Jul 2010 20:42:43 +0000 Subject: Merged revisions 276788 via svnmerge from https://origsvn.digium.com/svn/asterisk/trunk ........ r276788 | jpeeler | 2010-07-15 15:21:03 -0500 (Thu, 15 Jul 2010) | 6 lines Correct not setting the bindport before attempting to open the socket. Related to changes from 276571, I was accidentally testing with a port set in my configuration causing me to miss this. Also moved the TCP handling as well to occur before build_peer is called. ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@276809 f38db490-d61c-443f-a65b-d21fe96a405b --- channels/chan_sip.c | 68 ++++++++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 35 deletions(-) (limited to 'channels/chan_sip.c') diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 2d565b4b6..bf95bfc25 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -25085,6 +25085,15 @@ static int reload_config(enum channelreloadreason reason) authl = add_realm_authentication(authl, v->value, v->lineno); } + /* Set UDP address and open socket */ + bindaddr.sin_family = AF_INET; + internip = bindaddr; + if (ast_find_ourip(&internip.sin_addr, bindaddr)) { + ast_log(LOG_WARNING, "Unable to get own IP address, SIP disabled\n"); + ast_config_destroy(cfg); + return 0; + } + ast_mutex_lock(&netlock); if ((sipsock > -1) && (memcmp(&old_bindaddr, &bindaddr, sizeof(struct sockaddr_in)))) { close(sipsock); @@ -25129,6 +25138,30 @@ static int reload_config(enum channelreloadreason reason) } ast_mutex_unlock(&netlock); + /* Start TCP server */ + ast_tcptls_server_start(&sip_tcp_desc); + if (sip_tcp_desc.accept_fd == -1 && sip_tcp_desc.local_address.sin_family == AF_INET) { + /* TCP server start failed. Tell the admin */ + ast_log(LOG_ERROR, "SIP TCP Server start failed. Not listening on TCP socket.\n"); + sip_tcp_desc.local_address.sin_family = 0; + } else { + ast_debug(2, "SIP TCP server started\n"); + } + + /* Start TLS server if needed */ + memcpy(sip_tls_desc.tls_cfg, &default_tls_cfg, sizeof(default_tls_cfg)); + + if (ast_ssl_setup(sip_tls_desc.tls_cfg)) { + ast_tcptls_server_start(&sip_tls_desc); + if (default_tls_cfg.enabled && sip_tls_desc.accept_fd == -1) { + ast_log(LOG_ERROR, "TLS Server start failed. Not listening on TLS socket.\n"); + sip_tls_desc.tls_cfg = NULL; + } + } else if (sip_tls_desc.tls_cfg->enabled) { + sip_tls_desc.tls_cfg = NULL; + ast_log(LOG_WARNING, "SIP TLS server did not load because of errors.\n"); + } + if (ucfg) { struct ast_variable *gen; int genhassip, genregistersip; @@ -25192,7 +25225,6 @@ static int reload_config(enum channelreloadreason reason) } ast_config_destroy(ucfg); } - /* Load peers, users and friends */ cat = NULL; @@ -25226,40 +25258,6 @@ static int reload_config(enum channelreloadreason reason) } } } - - /* Set UDP address and open socket */ - bindaddr.sin_family = AF_INET; - internip = bindaddr; - if (ast_find_ourip(&internip.sin_addr, bindaddr)) { - ast_log(LOG_WARNING, "Unable to get own IP address, SIP disabled\n"); - ast_config_destroy(cfg); - return 0; - } - - /* Start TCP server */ - ast_tcptls_server_start(&sip_tcp_desc); - if (sip_tcp_desc.accept_fd == -1 && sip_tcp_desc.local_address.sin_family == AF_INET) { - /* TCP server start failed. Tell the admin */ - ast_log(LOG_ERROR, "SIP TCP Server start failed. Not listening on TCP socket.\n"); - sip_tcp_desc.local_address.sin_family = 0; - } else { - ast_debug(2, "SIP TCP server started\n"); - } - - /* Start TLS server if needed */ - memcpy(sip_tls_desc.tls_cfg, &default_tls_cfg, sizeof(default_tls_cfg)); - - if (ast_ssl_setup(sip_tls_desc.tls_cfg)) { - ast_tcptls_server_start(&sip_tls_desc); - if (default_tls_cfg.enabled && sip_tls_desc.accept_fd == -1) { - ast_log(LOG_ERROR, "TLS Server start failed. Not listening on TLS socket.\n"); - sip_tls_desc.tls_cfg = NULL; - } - } else if (sip_tls_desc.tls_cfg->enabled) { - sip_tls_desc.tls_cfg = NULL; - ast_log(LOG_WARNING, "SIP TLS server did not load because of errors.\n"); - } - /* Add default domains - host name, IP address and IP:port * Only do this if user added any sip domain with "localdomains" -- cgit v1.2.3