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);