smb1cli_trans: add support for tevent_req_cancel()
authorStefan Metzmacher <metze@samba.org>
Mon, 28 Nov 2011 09:41:25 +0000 (10:41 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 29 Nov 2011 15:00:08 +0000 (16:00 +0100)
metze

libcli/smb/smb1cli_trans.c

index c9a758c8e2f573a3d39ce9ab3f4a10dd7812b88c..fadac8e7b4a3f1afa82b148be81b567b49f53d83 100644 (file)
@@ -406,6 +406,7 @@ static void smb1cli_trans_format(struct smb1cli_trans_state *state,
        *piov_count = iov - state->iov;
 }
 
+static bool smb1cli_trans_cancel(struct tevent_req *req);
 static void smb1cli_trans_done(struct tevent_req *subreq);
 
 struct tevent_req *smb1cli_trans_send(
@@ -536,9 +537,24 @@ struct tevent_req *smb1cli_trans_send(
        state->primary_subreq = subreq;
        talloc_set_destructor(state, smb1cli_trans_state_destructor);
 
+       tevent_req_set_cancel_fn(req, smb1cli_trans_cancel);
+
        return req;
 }
 
+static bool smb1cli_trans_cancel(struct tevent_req *req)
+{
+       struct smb1cli_trans_state *state =
+               tevent_req_data(req,
+               struct smb1cli_trans_state);
+
+       if (state->primary_subreq == NULL) {
+               return false;
+       }
+
+       return tevent_req_cancel(state->primary_subreq);
+}
+
 static void smb1cli_trans_done2(struct tevent_req *subreq);
 
 static void smb1cli_trans_done(struct tevent_req *subreq)