diff options
author | Gerald Carter <jerry@samba.org> | 2003-12-04 20:20:59 +0000 |
---|---|---|
committer | Gerald Carter <jerry@samba.org> | 2003-12-04 20:20:59 +0000 |
commit | 16194fbc5a296aae9d7b4cb03512f22dffe48158 (patch) | |
tree | d6899abe4b50876abf8641b2cb2e3847d90fabe6 /source3 | |
parent | 903017b1ee1db0984ed02d1d8b536af8841e7733 (diff) | |
download | samba-16194fbc5a296aae9d7b4cb03512f22dffe48158.tar.gz samba-16194fbc5a296aae9d7b4cb03512f22dffe48158.tar.bz2 samba-16194fbc5a296aae9d7b4cb03512f22dffe48158.zip |
fix process_incoming_data() to return the number of bytes handled this call whether we have a complete pdu or not; fixes bug with multiple pdu request rpc's broken over SMBwriteX calls each
(This used to be commit ff06f3ca8e597d093b8a76b5cfabfa6009f4b591)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/rpc_server/srv_pipe_hnd.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/source3/rpc_server/srv_pipe_hnd.c b/source3/rpc_server/srv_pipe_hnd.c index a9fd9ec652..514c22d471 100644 --- a/source3/rpc_server/srv_pipe_hnd.c +++ b/source3/rpc_server/srv_pipe_hnd.c @@ -772,6 +772,7 @@ static ssize_t process_complete_pdu(pipes_struct *p) static ssize_t process_incoming_data(pipes_struct *p, char *data, size_t n) { size_t data_to_copy = MIN(n, MAX_PDU_FRAG_LEN - p->in_data.pdu_received_len); + size_t old_pdu_received_len = p->in_data.pdu_received_len; DEBUG(10,("process_incoming_data: Start: pdu_received_len = %u, pdu_needed_len = %u, incoming data = %u\n", (unsigned int)p->in_data.pdu_received_len, (unsigned int)p->in_data.pdu_needed_len, @@ -831,10 +832,11 @@ incoming data size = %u\n", (unsigned int)p->in_data.pdu_received_len, (unsigned /* * Do we have a complete PDU ? + * (return the nym of bytes handled in the call) */ if(p->in_data.pdu_received_len == p->in_data.pdu_needed_len) - return process_complete_pdu(p); + return process_complete_pdu(p) - old_pdu_received_len; DEBUG(10,("process_incoming_data: not a complete PDU yet. pdu_received_len = %u, pdu_needed_len = %u\n", (unsigned int)p->in_data.pdu_received_len, (unsigned int)p->in_data.pdu_needed_len )); |