s4:libcli/smb2: add smb2_transport_credits_ask_num()
authorStefan Metzmacher <metze@samba.org>
Mon, 8 Jun 2009 15:59:26 +0000 (17:59 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 9 Jun 2009 14:49:30 +0000 (16:49 +0200)
metze

source4/libcli/smb2/request.c
source4/libcli/smb2/smb2.h
source4/libcli/smb2/transport.c

index 7482cf1f2c4b39fddcce6fd6bbb91d3f6b067103..f3684ed280aa8dcabc34bd9eed9a1676e40129b2 100644 (file)
@@ -134,10 +134,10 @@ struct smb2_request *smb2_request_init(struct smb2_transport *transport, uint16_
        SSVAL(req->out.hdr, SMB2_HDR_EPOCH,             0);
        SIVAL(req->out.hdr, SMB2_HDR_STATUS,            0);
        SSVAL(req->out.hdr, SMB2_HDR_OPCODE,            opcode);
-       SSVAL(req->out.hdr, SMB2_HDR_CREDIT,            0);
+       SSVAL(req->out.hdr, SMB2_HDR_CREDIT,            transport->credits.ask_num);
        SIVAL(req->out.hdr, SMB2_HDR_FLAGS,             flags);
        SIVAL(req->out.hdr, SMB2_HDR_NEXT_COMMAND,      0);
-       SBVAL(req->out.hdr, SMB2_HDR_MESSAGE_ID,                req->seqnum);
+       SBVAL(req->out.hdr, SMB2_HDR_MESSAGE_ID,        req->seqnum);
        SIVAL(req->out.hdr, SMB2_HDR_PID,               0);
        SIVAL(req->out.hdr, SMB2_HDR_TID,               0);
        SBVAL(req->out.hdr, SMB2_HDR_SESSION_ID,                0);
index 39d6aaacba8fcad0dac1c47a6f27a4ade1bfb466..eb231984dfa516e4d2d726fc45d6678f1f02a19a 100644 (file)
@@ -86,6 +86,10 @@ struct smb2_transport {
                struct smb2_request_buffer buffer;
        } compound;
 
+       struct {
+               uint16_t ask_num;
+       } credits;
+
        /* a list of requests that are pending for receive on this
           connection */
        struct smb2_request *pending_recv;
index 49b72a45458f5ff89971c3f6b8ea6c4f5a644f40..60522370b7ab3ec5edf35c201fbd48c5d8baf53a 100644 (file)
@@ -84,6 +84,7 @@ struct smb2_transport *smb2_transport_init(struct smbcli_socket *sock,
 
        transport->socket = talloc_steal(transport, sock);
        transport->options = *options;
+       transport->credits.ask_num = 1;
 
        /* setup the stream -> packet parser */
        transport->packet = packet_init(transport);
@@ -545,6 +546,12 @@ void smb2_transport_compound_set_related(struct smb2_transport *transport,
        transport->compound.related = related;
 }
 
+void smb2_transport_credits_ask_num(struct smb2_transport *transport,
+                                   uint16_t ask_num)
+{
+       transport->credits.ask_num = ask_num;
+}
+
 static void idle_handler(struct tevent_context *ev, 
                         struct tevent_timer *te, struct timeval t, void *private_data)
 {