diff options
author | Benny Prijono <bennylp@teluu.com> | 2013-04-26 06:01:43 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2013-04-26 06:01:43 +0000 |
commit | 794a79431f46ba8a6c5316c082c064b1b768586a (patch) | |
tree | 6f176e0204a84a4ea29578c15c833903eb745818 /pjsip/src/pjsip | |
parent | 688fdf10f000a6190b31eee6fc183decda5005aa (diff) |
Fixed #1661: Option to use SO_REUSEADDR for TCP and TLS listeners and use it by default on non-Windows platforms
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4506 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsip')
-rw-r--r-- | pjsip/src/pjsip/sip_transport_tcp.c | 12 | ||||
-rw-r--r-- | pjsip/src/pjsip/sip_transport_tls.c | 1 |
2 files changed, 13 insertions, 0 deletions
diff --git a/pjsip/src/pjsip/sip_transport_tcp.c b/pjsip/src/pjsip/sip_transport_tcp.c index fa515d28..38bd42ae 100644 --- a/pjsip/src/pjsip/sip_transport_tcp.c +++ b/pjsip/src/pjsip/sip_transport_tcp.c @@ -217,6 +217,7 @@ PJ_DEF(void) pjsip_tcp_transport_cfg_default(pjsip_tcp_transport_cfg *cfg, cfg->af = af; pj_sockaddr_init(cfg->af, &cfg->bind_addr, NULL, 0); cfg->async_cnt = 1; + cfg->reuse_addr = PJSIP_TCP_TRANSPORT_REUSEADDR; } @@ -298,6 +299,17 @@ PJ_DEF(pj_status_t) pjsip_tcp_transport_start3( 2, listener->factory.obj_name, "SIP TCP listener socket"); + /* Apply SO_REUSEADDR */ + if (cfg->reuse_addr) { + int enabled = 1; + status = pj_sock_setsockopt(sock, pj_SOL_SOCKET(), pj_SO_REUSEADDR(), + &enabled, sizeof(enabled)); + if (status != PJ_SUCCESS) { + PJ_PERROR(4,(listener->factory.obj_name, status, + "Warning: error applying SO_REUSEADDR")); + } + } + /* Bind address may be different than factory.local_addr because * factory.local_addr will be resolved below. */ diff --git a/pjsip/src/pjsip/sip_transport_tls.c b/pjsip/src/pjsip/sip_transport_tls.c index 2e703c6b..06244e53 100644 --- a/pjsip/src/pjsip/sip_transport_tls.c +++ b/pjsip/src/pjsip/sip_transport_tls.c @@ -337,6 +337,7 @@ PJ_DEF(pj_status_t) pjsip_tls_transport_start2( pjsip_endpoint *endpt, ssock_param.read_buffer_size = PJSIP_MAX_PKT_LEN; ssock_param.ciphers_num = listener->tls_setting.ciphers_num; ssock_param.ciphers = listener->tls_setting.ciphers; + ssock_param.reuse_addr = listener->tls_setting.reuse_addr; ssock_param.qos_type = listener->tls_setting.qos_type; ssock_param.qos_ignore_error = listener->tls_setting.qos_ignore_error; pj_memcpy(&ssock_param.qos_params, &listener->tls_setting.qos_params, |