diff options
author | Ralph Boehme <slow@samba.org> | 2018-10-28 02:05:45 +0100 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2018-11-06 09:10:22 +0100 |
commit | 8ae8c5670017dfe7e06d13e9441ad4f9434a378c (patch) | |
tree | 97289feeb975da9bc14a5feeae9e3632a3aa016b | |
parent | d79d7192bf27914d6d13863a2aab18beb3945bb2 (diff) | |
download | samba-8ae8c5670017dfe7e06d13e9441ad4f9434a378c.tar.gz |
s4:libcli/smb2: reapply request endtime
tevent_req_finish() removed a possible request timeout, make sure to
reinstall it. This happened when an interim SMB2 response was received.
Bug: https://bugzilla.samba.org/show_bug.cgi?id=13667
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
(cherry picked from commit a6de555c51ca34ef24ac4b4cb672cd748d3197a1)
-rw-r--r-- | source4/libcli/smb2/transport.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/source4/libcli/smb2/transport.c b/source4/libcli/smb2/transport.c index 1d08289341b..18cc490be48 100644 --- a/source4/libcli/smb2/transport.c +++ b/source4/libcli/smb2/transport.c @@ -293,7 +293,24 @@ static void smb2_request_done(struct tevent_req *subreq) req->status = smb2cli_req_recv(req->subreq, req, &req->recv_iov, NULL, 0); if (NT_STATUS_EQUAL(req->status, STATUS_PENDING)) { + struct timeval endtime = smbXcli_req_endtime(subreq); + bool ok; + req->cancel.can_cancel = true; + if (timeval_is_zero(&endtime)) { + return; + } + + ok = tevent_req_set_endtime( + subreq, req->transport->ev, endtime); + if (!ok) { + req->status = NT_STATUS_INTERNAL_ERROR; + req->state = SMB2_REQUEST_ERROR; + if (req->async.fn) { + req->async.fn(req); + } + return; + } return; } TALLOC_FREE(req->subreq); |