From c6923a30a6881f73b6f06fe1d5360dcacb159e9b Mon Sep 17 00:00:00 2001 From: Micah Elizabeth Scott <micah@scanlime.org> Date: Thu, 31 Oct 2013 02:16:34 -0700 Subject: [PATCH] Cleanup nonblocking socket init --- server/src/opcsink.cpp | 9 ++++++++- server/src/opcsink.h | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/server/src/opcsink.cpp b/server/src/opcsink.cpp index 1311fb5..f1e3491 100644 --- a/server/src/opcsink.cpp +++ b/server/src/opcsink.cpp @@ -66,7 +66,7 @@ void OPCSink::start(struct addrinfo *listenAddr) int arg = 1; setsockopt(mSocket, SOL_SOCKET, SO_REUSEADDR, SOCKOPT_ARG(&arg), sizeof arg); - fcntl(mSocket, F_SETFL, O_NONBLOCK); + setNonBlock(mSocket); if (bind(mSocket, listenAddr->ai_addr, listenAddr->ai_addrlen)) { perror("bind"); @@ -86,6 +86,11 @@ void OPCSink::start(struct addrinfo *listenAddr) mThread = new tthread::thread(threadWrapper, this); } +void OPCSink::setNonBlock(int fd) +{ + fcntl(fd, F_SETFL, O_NONBLOCK); +} + void OPCSink::threadWrapper(void *arg) { OPCSink *self = (OPCSink*) arg; @@ -159,6 +164,8 @@ void OPCSink::pollAccept() return; } + setNonBlock(mSocket); + // Disable nagle algorithm, we want low-latency int arg = 1; setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, SOCKOPT_ARG(&arg), sizeof arg); diff --git a/server/src/opcsink.h b/server/src/opcsink.h index ec39399..7241f68 100644 --- a/server/src/opcsink.h +++ b/server/src/opcsink.h @@ -82,6 +82,7 @@ private: static void threadWrapper(void *arg); void threadFunc(); + void setNonBlock(int fd); void pollAccept(); bool pollClient(Client &client); -- GitLab