diff options
-rw-r--r-- | indra/llmessage/lliosocket.cpp | 26 | ||||
-rw-r--r-- | indra/llmessage/lliosocket.h | 11 |
2 files changed, 7 insertions, 30 deletions
diff --git a/indra/llmessage/lliosocket.cpp b/indra/llmessage/lliosocket.cpp index 8c752fbe30..ca84fa8bb8 100644 --- a/indra/llmessage/lliosocket.cpp +++ b/indra/llmessage/lliosocket.cpp @@ -191,7 +191,7 @@ LLSocket::ptr_t LLSocket::create(apr_pool_t* pool, EType type, U16 port) port = PORT_EPHEMERAL; } rv->mPort = port; - rv->setNonBlocking(); + rv->setOptions(); return rv; } @@ -206,7 +206,7 @@ LLSocket::ptr_t LLSocket::create(apr_socket_t* socket, apr_pool_t* pool) } rv = ptr_t(new LLSocket(socket, pool)); rv->mPort = PORT_EPHEMERAL; - rv->setNonBlocking(); + rv->setOptions(); return rv; } @@ -227,10 +227,10 @@ bool LLSocket::blockingConnect(const LLHost& host) { return false; } - setBlocking(1000); + apr_socket_timeout_set(mSocket, 1000); ll_debug_socket("Blocking connect", mSocket); if(ll_apr_warn_status(apr_socket_connect(mSocket, sa))) return false; - setNonBlocking(); + setOptions(); return true; } @@ -258,27 +258,11 @@ LLSocket::~LLSocket() } } -// See http://dev.ariel-networks.com/apr/apr-tutorial/html/apr-tutorial-13.html#ss13.4 -// for an explanation of how to get non-blocking sockets and timeouts with -// consistent behavior across platforms. - -void LLSocket::setBlocking(S32 timeout) -{ - LLMemType m1(LLMemType::MTYPE_IO_TCP); - // set up the socket options - ll_apr_warn_status(apr_socket_timeout_set(mSocket, timeout)); - ll_apr_warn_status(apr_socket_opt_set(mSocket, APR_SO_NONBLOCK, 0)); - ll_apr_warn_status(apr_socket_opt_set(mSocket, APR_SO_SNDBUF, LL_SEND_BUFFER_SIZE)); - ll_apr_warn_status(apr_socket_opt_set(mSocket, APR_SO_RCVBUF, LL_RECV_BUFFER_SIZE)); - -} - -void LLSocket::setNonBlocking() +void LLSocket::setOptions() { LLMemType m1(LLMemType::MTYPE_IO_TCP); // set up the socket options ll_apr_warn_status(apr_socket_timeout_set(mSocket, 0)); - ll_apr_warn_status(apr_socket_opt_set(mSocket, APR_SO_NONBLOCK, 1)); ll_apr_warn_status(apr_socket_opt_set(mSocket, APR_SO_SNDBUF, LL_SEND_BUFFER_SIZE)); ll_apr_warn_status(apr_socket_opt_set(mSocket, APR_SO_RCVBUF, LL_RECV_BUFFER_SIZE)); diff --git a/indra/llmessage/lliosocket.h b/indra/llmessage/lliosocket.h index e0f6c1e34d..6806e5084a 100644 --- a/indra/llmessage/lliosocket.h +++ b/indra/llmessage/lliosocket.h @@ -153,16 +153,9 @@ protected: LLSocket(apr_socket_t* socket, apr_pool_t* pool); /** - * @brief Set default socket options, with SO_NONBLOCK = 0 and a timeout in us. - * @param timeout Number of microseconds to wait on this socket. Any - * negative number means block-forever. TIMEOUT OF 0 IS NON-PORTABLE. + * @brief Set default socket options. */ - void setBlocking(S32 timeout); - - /** - * @brief Set default socket options, with SO_NONBLOCK = 1 and timeout = 0. - */ - void setNonBlocking(); + void setOptions(); public: /** |