summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorRalph Boehme <slow@samba.org>2018-10-28 02:05:45 +0100
committerKarolin Seeger <kseeger@samba.org>2018-11-06 09:10:22 +0100
commit8ae8c5670017dfe7e06d13e9441ad4f9434a378c (patch)
tree97289feeb975da9bc14a5feeae9e3632a3aa016b /source4
parentd79d7192bf27914d6d13863a2aab18beb3945bb2 (diff)
downloadsamba-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)
Diffstat (limited to 'source4')
-rw-r--r--source4/libcli/smb2/transport.c17
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);