summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/src/pjsip/sip_transport_tcp.c5
-rw-r--r--pjsip/src/pjsip/sip_transport_tls.c5
-rw-r--r--pjsip/src/pjsip/sip_transport_tls_ossl.c5
3 files changed, 15 insertions, 0 deletions
diff --git a/pjsip/src/pjsip/sip_transport_tcp.c b/pjsip/src/pjsip/sip_transport_tcp.c
index 1ad8fedc..43c82ae8 100644
--- a/pjsip/src/pjsip/sip_transport_tcp.c
+++ b/pjsip/src/pjsip/sip_transport_tcp.c
@@ -544,6 +544,7 @@ static pj_status_t tcp_create( struct tcp_listener *listener,
pj_activesock_cfg asock_cfg;
pj_activesock_cb tcp_callback;
const pj_str_t ka_pkt = PJSIP_TCP_KEEP_ALIVE_DATA;
+ pj_int32_t val = 1;
pj_status_t status;
@@ -631,6 +632,10 @@ static pj_status_t tcp_create( struct tcp_listener *listener,
tcp->ka_timer.cb = &tcp_keep_alive_timer;
pj_ioqueue_op_key_init(&tcp->ka_op_key.key, sizeof(pj_ioqueue_op_key_t));
pj_strdup(tcp->base.pool, &tcp->ka_pkt, &ka_pkt);
+
+ /* Prevent SIGPIPE */
+ pj_sock_setsockopt(tcp->sock, pj_SOL_SOCKET(), pj_SO_NOSIGPIPE(),
+ &val, sizeof(val));
/* Done setting up basic transport. */
*p_tcp = tcp;
diff --git a/pjsip/src/pjsip/sip_transport_tls.c b/pjsip/src/pjsip/sip_transport_tls.c
index 59c7e93d..5fcfc39e 100644
--- a/pjsip/src/pjsip/sip_transport_tls.c
+++ b/pjsip/src/pjsip/sip_transport_tls.c
@@ -527,6 +527,7 @@ static pj_status_t tls_create( struct tls_listener *listener,
{
struct tls_transport *tls;
const pj_str_t ka_pkt = PJSIP_TLS_KEEP_ALIVE_DATA;
+ pj_int32_t val = 1;
pj_status_t status;
@@ -616,6 +617,10 @@ static pj_status_t tls_create( struct tls_listener *listener,
pj_ioqueue_op_key_init(&tls->ka_op_key.key, sizeof(pj_ioqueue_op_key_t));
pj_strdup(tls->base.pool, &tls->ka_pkt, &ka_pkt);
+ /* Prevent SIGPIPE */
+ pj_sock_setsockopt(tcp->sock, pj_SOL_SOCKET(), pj_SO_NOSIGPIPE(),
+ &val, sizeof(val));
+
/* Done setting up basic transport. */
*p_tls = tls;
diff --git a/pjsip/src/pjsip/sip_transport_tls_ossl.c b/pjsip/src/pjsip/sip_transport_tls_ossl.c
index d652b0be..d2f1b423 100644
--- a/pjsip/src/pjsip/sip_transport_tls_ossl.c
+++ b/pjsip/src/pjsip/sip_transport_tls_ossl.c
@@ -1229,6 +1229,7 @@ static pj_status_t tls_create( struct tls_listener *listener,
pj_ioqueue_t *ioqueue;
pj_ioqueue_callback tls_callback;
int rc;
+ pj_int32_t val = 1;
pj_status_t status;
@@ -1332,6 +1333,10 @@ static pj_status_t tls_create( struct tls_listener *listener,
tls->ka_timer.user_data = (void*) tls;
tls->ka_timer.cb = &tls_keep_alive_timer;
+ /* Prevent SIGPIPE */
+ pj_sock_setsockopt(tcp->sock, pj_SOL_SOCKET(), pj_SO_NOSIGPIPE(),
+ &val, sizeof(val));
+
/* Done setting up basic transport. */
*p_tls = tls;