]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s4: smbcli_transport_send hit the socket right away if possible
authorSam Liddicott <sam@liddicott.com>
Tue, 9 Jun 2009 11:51:44 +0000 (12:51 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 9 Jun 2009 16:51:31 +0000 (18:51 +0200)
[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>
source4/libcli/raw/clitransport.c

index 0ced607b1e5f04d4059921067de41e7b83fb7b9a..f5e81cd6f6906db31f8784557b7b6522f3c5b851 100644 (file)
@@ -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);