From 343c72b288664f27e8ef9bb7336ac98520045f26 Mon Sep 17 00:00:00 2001 From: Sukchan Lee Date: Sat, 15 Jun 2019 16:58:52 +0900 Subject: [PATCH] Option for NODELAY --- src/mme/ogs-lksctp.c | 13 +++++++------ src/mme/ogs-usrsctp.c | 13 +++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/mme/ogs-lksctp.c b/src/mme/ogs-lksctp.c index 28b5021ca..6a097f2e2 100644 --- a/src/mme/ogs-lksctp.c +++ b/src/mme/ogs-lksctp.c @@ -50,7 +50,6 @@ ogs_sock_t *ogs_sctp_socket(int family, int type, ogs_socknode_t *node) .sctp.max_num_of_istreams = 65535, .sctp.max_attempts = 4, .sctp.max_initial_timeout = 8000, /* 8 seconds */ - .nodelay = true /* Turn-on NODELAY */ }; ogs_sctp_set_option(&option, node); @@ -61,11 +60,6 @@ ogs_sock_t *ogs_sctp_socket(int family, int type, ogs_socknode_t *node) rv = subscribe_to_events(new); ogs_assert(rv == OGS_OK); - if (node->option.nodelay) { - rv = set_nodelay(new, node->option.nodelay); - ogs_assert(rv == OGS_OK); - } - rv = set_paddrparams(new, &option); ogs_assert(rv == OGS_OK); @@ -75,6 +69,13 @@ ogs_sock_t *ogs_sctp_socket(int family, int type, ogs_socknode_t *node) rv = set_initmsg(new, &option); ogs_assert(rv == OGS_OK); + if (node) { + if (node->option.nodelay) { + rv = set_nodelay(new, node->option.nodelay); + ogs_assert(rv == OGS_OK); + } + } + return new; } diff --git a/src/mme/ogs-usrsctp.c b/src/mme/ogs-usrsctp.c index 7be169866..001353827 100644 --- a/src/mme/ogs-usrsctp.c +++ b/src/mme/ogs-usrsctp.c @@ -67,7 +67,6 @@ ogs_sock_t *ogs_sctp_socket(int family, int type, ogs_socknode_t *node) .sctp.max_num_of_istreams = 65535, .sctp.max_attempts = 4, .sctp.max_initial_timeout = 8000, /* 8 seconds */ - .nodelay = true /* Turn-on NODELAY */ }; ogs_sctp_set_option(&option, node); @@ -78,11 +77,13 @@ ogs_sock_t *ogs_sctp_socket(int family, int type, ogs_socknode_t *node) return NULL; } - if (option.nodelay) { - if (usrsctp_setsockopt(socket, IPPROTO_SCTP, SCTP_NODELAY, - &on, sizeof(int)) < 0) { - ogs_error("usrsctp_setsockopt SCTP_NODELAY failed"); - return NULL; + if (node) { + if (node->option.nodelay) { + if (usrsctp_setsockopt(socket, IPPROTO_SCTP, SCTP_NODELAY, + &on, sizeof(int)) < 0) { + ogs_error("usrsctp_setsockopt SCTP_NODELAY failed"); + return NULL; + } } }