From 5843f17cb8553357042a00ebbf28256498778b8d Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Thu, 24 Apr 2008 02:20:00 +0000 Subject: [PATCH] When splitting the send request into multiple buffers, we must succeed after we have successfully sent the first buffer, even if not a single byte of some following buffer could be sent. We should probably even succeed whatever the error code -- not sure what is the reason for only doing that for B_WOULD_BLOCK and B_INTERRUPTED. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25121 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/network/stack/net_socket.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/add-ons/kernel/network/stack/net_socket.cpp b/src/add-ons/kernel/network/stack/net_socket.cpp index 1147c209a3..f46ce837f6 100644 --- a/src/add-ons/kernel/network/stack/net_socket.cpp +++ b/src/add-ons/kernel/network/stack/net_socket.cpp @@ -1154,7 +1154,7 @@ socket_send(net_socket *socket, msghdr *header, const void *data, size_t length, size_t sizeAfterSend = buffer->size; gNetBufferModule.free(buffer); - if (sizeAfterSend != bufferSize + if ((sizeAfterSend != bufferSize || bytesSent > 0) && (status == B_INTERRUPTED || status == B_WOULD_BLOCK)) { // this appears to be a partial write return bytesSent + (bufferSize - sizeAfterSend);