From ebf5523b6e2ae00d820d2c2d31c2f24aab020f91 Mon Sep 17 00:00:00 2001 From: Sam Liddicott Date: Tue, 9 Jun 2009 12:51:44 +0100 Subject: 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 Signed-off-by: Stefan Metzmacher --- source4/libcli/raw/clitransport.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'source4') 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); -- cgit