summaryrefslogtreecommitdiff
path: root/source4/libcli
diff options
context:
space:
mode:
authorSam Liddicott <sam@liddicott.com>2009-06-09 12:51:44 +0100
committerStefan Metzmacher <metze@samba.org>2009-06-09 18:51:31 +0200
commitebf5523b6e2ae00d820d2c2d31c2f24aab020f91 (patch)
tree9590dbcd366b0d7756b604f7297e617b3b6f8707 /source4/libcli
parent38cd0e086f50ce54d88a19aa5a6803469af90489 (diff)
downloadsamba-ebf5523b6e2ae00d820d2c2d31c2f24aab020f91.tar.gz
samba-ebf5523b6e2ae00d820d2c2d31c2f24aab020f91.tar.bz2
samba-ebf5523b6e2ae00d820d2c2d31c2f24aab020f91.zip
s4: smbcli_transport_send hit the socket right away if possible
[Metze; "make test" on git master outputs exactly the same test summary with our without this patch (apart from the "using seed" lines)] If the transport socket is writable, then push the queue along rather than wait until the caller returns back to the tevent loop. This strategy keeps the sockets piping hot, and is particularly good for cases where reading requests from one socket causes lots of writes on another socket, or where lots of writes are made in a batch. It doesn't matter if the socket is not writeable yet, packet_queue_run will return quite cheaply in such a case. Signed-off-by: Sam Liddicott <sam@liddicott.com> Signed-off-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'source4/libcli')
-rw-r--r--source4/libcli/raw/clitransport.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/source4/libcli/raw/clitransport.c b/source4/libcli/raw/clitransport.c
index 0ced607b1e..f5e81cd6f6 100644
--- a/source4/libcli/raw/clitransport.c
+++ b/source4/libcli/raw/clitransport.c
@@ -593,6 +593,13 @@ void smbcli_transport_send(struct smbcli_request *req)
return;
}
+ packet_queue_run(req->transport->packet);
+ if (req->transport->socket->sock == NULL) {
+ req->state = SMBCLI_REQUEST_ERROR;
+ req->status = NT_STATUS_NET_WRITE_FAULT;
+ return;
+ }
+
if (req->one_way_request) {
req->state = SMBCLI_REQUEST_DONE;
smbcli_request_destroy(req);