s3-net: display full value of "msDS-SupportedEncryptionTypes".
[sfrench/samba-autobuild/.git] / source3 / libsmb / clifile.c
index aee1745af4dc27b4b4f471314868f81c09001a16..61cb8b598930152d9c5fdd8e92c7a5cf94ef6652 100644 (file)
@@ -1796,9 +1796,11 @@ struct cli_ntcreate1_state {
        uint16_t vwv[24];
        uint16_t fnum;
        struct smb_create_returns cr;
+       struct tevent_req *subreq;
 };
 
 static void cli_ntcreate1_done(struct tevent_req *subreq);
+static bool cli_ntcreate1_cancel(struct tevent_req *req);
 
 static struct tevent_req *cli_ntcreate1_send(TALLOC_CTX *mem_ctx,
                                             struct tevent_context *ev,
@@ -1866,6 +1868,10 @@ static struct tevent_req *cli_ntcreate1_send(TALLOC_CTX *mem_ctx,
                return tevent_req_post(req, ev);
        }
        tevent_req_set_callback(subreq, cli_ntcreate1_done, req);
+
+       state->subreq = subreq;
+       tevent_req_set_cancel_fn(req, cli_ntcreate1_cancel);
+
        return req;
 }
 
@@ -1901,6 +1907,13 @@ static void cli_ntcreate1_done(struct tevent_req *subreq)
        tevent_req_done(req);
 }
 
+static bool cli_ntcreate1_cancel(struct tevent_req *req)
+{
+       struct cli_ntcreate1_state *state = tevent_req_data(
+               req, struct cli_ntcreate1_state);
+       return tevent_req_cancel(state->subreq);
+}
+
 static NTSTATUS cli_ntcreate1_recv(struct tevent_req *req,
                                   uint16_t *pfnum,
                                   struct smb_create_returns *cr)
@@ -1924,9 +1937,11 @@ struct cli_ntcreate_state {
                         struct smb_create_returns *cr);
        struct smb_create_returns cr;
        uint16_t fnum;
+       struct tevent_req *subreq;
 };
 
 static void cli_ntcreate_done(struct tevent_req *subreq);
+static bool cli_ntcreate_cancel(struct tevent_req *req);
 
 struct tevent_req *cli_ntcreate_send(TALLOC_CTX *mem_ctx,
                                     struct tevent_context *ev,
@@ -1950,6 +1965,11 @@ struct tevent_req *cli_ntcreate_send(TALLOC_CTX *mem_ctx,
 
        if (smbXcli_conn_protocol(cli->conn) >= PROTOCOL_SMB2_02) {
                state->recv = cli_smb2_create_fnum_recv;
+
+               if (cli->use_oplocks) {
+                       create_flags |= REQUEST_OPLOCK|REQUEST_BATCH_OPLOCK;
+               }
+
                subreq = cli_smb2_create_fnum_send(
                        state, ev, cli, fname, create_flags, desired_access,
                        file_attributes, share_access, create_disposition,
@@ -1965,6 +1985,10 @@ struct tevent_req *cli_ntcreate_send(TALLOC_CTX *mem_ctx,
                return tevent_req_post(req, ev);
        }
        tevent_req_set_callback(subreq, cli_ntcreate_done, req);
+
+       state->subreq = subreq;
+       tevent_req_set_cancel_fn(req, cli_ntcreate_cancel);
+
        return req;
 }
 
@@ -1984,6 +2008,13 @@ static void cli_ntcreate_done(struct tevent_req *subreq)
        tevent_req_done(req);
 }
 
+static bool cli_ntcreate_cancel(struct tevent_req *req)
+{
+       struct cli_ntcreate_state *state = tevent_req_data(
+               req, struct cli_ntcreate_state);
+       return tevent_req_cancel(state->subreq);
+}
+
 NTSTATUS cli_ntcreate_recv(struct tevent_req *req, uint16_t *fnum,
                           struct smb_create_returns *cr)
 {