From aea687c3034b7d68e1aa8b476340a6dfef4318ac Mon Sep 17 00:00:00 2001 From: Martin Peach Date: Mon, 2 Mar 2009 17:01:36 +0000 Subject: Fixed a bug that prevented the send routine from leaving the loop when no more data can be sent. Now it won't hang if you try sending to a recently disconnected client, honest! svn path=/trunk/externals/mrpeach/; revision=10828 --- net/tcpserver.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/net/tcpserver.c b/net/tcpserver.c index 48f55a1..9b7ef4e 100644 --- a/net/tcpserver.c +++ b/net/tcpserver.c @@ -415,6 +415,7 @@ static size_t tcpserver_send_buf(int client, int sockfd, char *byte_buf, size_t bp += result; } } + else return sent;/* abandon any further attempts to send so we don't block */ } return sent; } @@ -607,11 +608,15 @@ static int tcpserver_set_socket_send_buf_size(int sockfd, int size) int optLen = sizeof(int); #ifdef MSW if (setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, (char*)&optVal, optLen) == SOCKET_ERROR) + { post("%s_set_socket_send_buf_size: setsockopt returned %d\n", objName, WSAGetLastError()); #else if (setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, (char*)&optVal, optLen) == -1) + { post("%s_set_socket_send_buf_size: setsockopt returned %d\n", objName, errno); #endif + return 0; + } else return (tcpserver_get_socket_send_buf_size(sockfd)); } -- cgit v1.2.1