diff options
author | Andrew Tridgell <tridge@samba.org> | 2005-11-09 13:42:56 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:45:58 -0500 |
commit | 5c620048e30e1820d688084a83163f2fe6d1a63a (patch) | |
tree | d20ddbee5268cf6efefbee0693393d9e23a35980 /source4/smb_server/smb_server.c | |
parent | dce04d193eb0d195eb000c766921c51260d65f0e (diff) | |
download | samba-5c620048e30e1820d688084a83163f2fe6d1a63a.tar.gz samba-5c620048e30e1820d688084a83163f2fe6d1a63a.tar.bz2 samba-5c620048e30e1820d688084a83163f2fe6d1a63a.zip |
r11607: switched the smb server to use the generic packet send code
(This used to be commit 9eee7bafa12553a894536db8ce5cc2d268e09ae6)
Diffstat (limited to 'source4/smb_server/smb_server.c')
-rw-r--r-- | source4/smb_server/smb_server.c | 44 |
1 files changed, 3 insertions, 41 deletions
diff --git a/source4/smb_server/smb_server.c b/source4/smb_server/smb_server.c index 0cdc2dc7e4..6d2ffc0274 100644 --- a/source4/smb_server/smb_server.c +++ b/source4/smb_server/smb_server.c @@ -620,47 +620,9 @@ static void smbsrv_recv(struct stream_connection *conn, uint16_t flags) */ static void smbsrv_send(struct stream_connection *conn, uint16_t flags) { - struct smbsrv_connection *smb_conn = talloc_get_type(conn->private, struct smbsrv_connection); - - while (smb_conn->pending_send) { - struct smbsrv_request *req = smb_conn->pending_send; - DATA_BLOB blob; - NTSTATUS status; - size_t sendlen; - - blob.data = req->out.buffer; - blob.length = req->out.size; - - /* send as much of this request as we can */ - status = socket_send(conn->socket, &blob, &sendlen, 0); - if (NT_STATUS_IS_ERR(status)) { - smbsrv_terminate_connection(req->smb_conn, nt_errstr(status)); - break; - } - if (sendlen == 0) { - break; - } - - req->out.buffer += sendlen; - req->out.size -= sendlen; - - /* is the whole request gone? */ - if (req->out.size == 0) { - DLIST_REMOVE(smb_conn->pending_send, req); - req_destroy(req); - } - } - - if (smb_conn->terminate) { - stream_terminate_connection(smb_conn->connection, smb_conn->terminate); - return; - } - - /* if no more requests are pending to be sent then - we should stop select for write */ - if (smb_conn->pending_send == NULL) { - EVENT_FD_NOT_WRITEABLE(conn->event.fde); - } + struct smbsrv_connection *smb_conn = talloc_get_type(conn->private, + struct smbsrv_connection); + packet_queue_run(smb_conn->packet); } |