From d866f6e8861647c45f438bc5b21905dacee41f8e Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 24 Dec 2014 17:01:52 -0200 Subject: Save two system calls for setting a socket non-blocking on Linux Linux's socket(2) system call can take SOCK_NONBLOCK and let us avoid the extra two fcntl(2) to change the setting after it's created. Change-Id: Ie0d7a2d51acc21acd850cbee6d0f76e27b1ae859 Reviewed-by: Richard J. Moore --- src/network/socket/qnativesocketengine_win.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/network/socket/qnativesocketengine_win.cpp') diff --git a/src/network/socket/qnativesocketengine_win.cpp b/src/network/socket/qnativesocketengine_win.cpp index 184add15c3..7d62fc3955 100644 --- a/src/network/socket/qnativesocketengine_win.cpp +++ b/src/network/socket/qnativesocketengine_win.cpp @@ -383,8 +383,15 @@ bool QNativeSocketEnginePrivate::createNewSocket(QAbstractSocket::SocketType soc #endif socketDescriptor = socket; - return true; + // Make the socket nonblocking. + if (!setOption(QAbstractSocketEngine::NonBlockingSocketOption, 1)) { + setError(QAbstractSocket::UnsupportedSocketOperationError, NonBlockingInitFailedErrorString); + q_func()->close(); + return false; + } + + return true; } /*! \internal -- cgit v1.2.3