aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_sip.c
diff options
context:
space:
mode:
authorjpeeler <jpeeler@f38db490-d61c-443f-a65b-d21fe96a405b>2010-07-15 20:42:43 +0000
committerjpeeler <jpeeler@f38db490-d61c-443f-a65b-d21fe96a405b>2010-07-15 20:42:43 +0000
commit22c43ec9e608f462eda5bff2bb27243da8157756 (patch)
treef91fcbf5120b21f0bc509f02264461b5e2e3a5dc /channels/chan_sip.c
parentf59a876bed8305ee23612329fee95a9fc90d8df2 (diff)
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
Diffstat (limited to 'channels/chan_sip.c')
-rw-r--r--channels/chan_sip.c68
1 files changed, 33 insertions, 35 deletions
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"