fixeria submitted this change.

View Change

Approvals: Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved
smpp: set TCP_NODELAY sockopt

Change-Id: Ibfaaeaa6e21f621eb32b37b783e286e40859c915
Fixes: OS#5568
---
M src/libsmpputil/smpp_smsc.c
M src/utils/smpp_mirror.c
2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/libsmpputil/smpp_smsc.c b/src/libsmpputil/smpp_smsc.c
index 34e24c5..786efa1 100644
--- a/src/libsmpputil/smpp_smsc.c
+++ b/src/libsmpputil/smpp_smsc.c
@@ -27,6 +27,7 @@

#include <sys/socket.h>
#include <netinet/in.h>
+#include <netinet/tcp.h>

#include <smpp34.h>
#include <smpp34_structs.h>
@@ -984,7 +985,7 @@
*/
int smpp_smsc_start(struct smsc *smsc, const char *bind_addr, uint16_t port)
{
- int rc;
+ int rc, val;

LOGP(DSMPP, LOGL_NOTICE, "SMPP at %s %d\n",
bind_addr ? bind_addr : "0.0.0.0", port ? port : SMPP_PORT);
@@ -995,6 +996,11 @@
if (rc < 0)
return rc;

+ val = 1;
+ rc = setsockopt(smsc->listen_ofd.fd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val));
+ if (rc < 0)
+ LOGP(DSMPP, LOGL_ERROR, "Failed to set TCP_NODELAY: %s\n", strerror(errno));
+
/* store new address and port */
rc = smpp_smsc_conf(smsc, bind_addr, port ? port : SMPP_PORT);
if (rc)
diff --git a/src/utils/smpp_mirror.c b/src/utils/smpp_mirror.c
index 340e94f..5df09e4 100644
--- a/src/utils/smpp_mirror.c
+++ b/src/utils/smpp_mirror.c
@@ -5,6 +5,7 @@
#include <string.h>

#include <netinet/in.h>
+#include <netinet/tcp.h>

#include <smpp34.h>
#include <smpp34_structs.h>
@@ -241,7 +242,7 @@

static int smpp_esme_init(struct esme *esme, const char *host, uint16_t port)
{
- int rc;
+ int rc, val;

if (port == 0)
port = SMPP_PORT;
@@ -255,6 +256,11 @@
if (rc < 0)
return rc;

+ val = 1;
+ rc = setsockopt(esme->wqueue.bfd.fd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val));
+ if (rc < 0)
+ LOGP(DSMPP, LOGL_ERROR, "Failed to set TCP_NODELAY: %s\n", strerror(errno));
+
return bind_transceiver(esme);
}


To view, visit change 38610. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: merged
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: Ibfaaeaa6e21f621eb32b37b783e286e40859c915
Gerrit-Change-Number: 38610
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>