s3:libsmb: use cli_state_{g,s}et_uid instead of smb1.uid directly
authorLuk Claes <luk@debian.org>
Sat, 2 Jun 2012 10:45:40 +0000 (12:45 +0200)
committerStefan Metzmacher <metze@samba.org>
Mon, 23 Jul 2012 20:13:29 +0000 (22:13 +0200)
Signed-off-by: Luk Claes <luk@debian.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
source3/include/client.h
source3/libsmb/async_smb.c
source3/libsmb/clientgen.c
source3/libsmb/clitrans.c

index 5694ed0888eb9e0b395a18f1d1fd0025625b56ef..b6e62a3d92dd4767948cd9a67e2b3d941559f869 100644 (file)
@@ -104,7 +104,7 @@ struct cli_state {
                uint16_t pid;
                uint16_t vc_num;
                uint16_t tid;
-               uint16_t uid;
+               struct smbXcli_session *session;
        } smb1;
 
        struct {
index c2986e25e92cf6ebc11a9872b7b3be5047e843af..4350d8f1bd15bbaa8e400e7fa30942db5505a5ec 100644 (file)
@@ -62,6 +62,7 @@ struct tevent_req *cli_smb_req_create(TALLOC_CTX *mem_ctx,
        uint8_t clear_flags = 0;
        uint16_t additional_flags2 = 0;
        uint16_t clear_flags2 = 0;
+       uint16_t uid = 0;
 
        state = talloc_zero(mem_ctx, struct cli_smb_req_state);
        if (state == NULL) {
@@ -87,13 +88,14 @@ struct tevent_req *cli_smb_req_create(TALLOC_CTX *mem_ctx,
                additional_flags2 |= FLAGS2_DFS_PATHNAMES;
        }
 
+       uid = cli_state_get_uid(cli);
        state->req = smb1cli_req_create(state, ev, cli->conn, smb_command,
                                        additional_flags, clear_flags,
                                        additional_flags2, clear_flags2,
                                        cli->timeout,
                                        cli->smb1.pid,
                                        cli->smb1.tid,
-                                       cli->smb1.uid,
+                                       uid,
                                        wct, vwv, iov_count, bytes_iov);
        if (state->req == NULL) {
                talloc_free(state);
@@ -120,6 +122,7 @@ struct tevent_req *cli_smb_send(TALLOC_CTX *mem_ctx,
        uint8_t clear_flags = 0;
        uint16_t additional_flags2 = 0;
        uint16_t clear_flags2 = 0;
+       uint16_t uid = 0;
 
        state = talloc_zero(mem_ctx, struct cli_smb_req_state);
        if (state == NULL) {
@@ -145,13 +148,14 @@ struct tevent_req *cli_smb_send(TALLOC_CTX *mem_ctx,
                additional_flags2 |= FLAGS2_DFS_PATHNAMES;
        }
 
+       uid = cli_state_get_uid(cli);
        state->req = smb1cli_req_send(state, ev, cli->conn, smb_command,
                                additional_flags, clear_flags,
                                additional_flags2, clear_flags2,
                                cli->timeout,
                                cli->smb1.pid,
                                cli->smb1.tid,
-                               cli->smb1.uid,
+                               uid,
                                wct, vwv, num_bytes, bytes);
        if (state->req == NULL) {
                talloc_free(state);
index 4398d801821280251ca79e63728fdb99423897b3..dcb84673394e713eca081872d604c9af981b33ab 100644 (file)
@@ -269,7 +269,10 @@ struct cli_state *cli_state_create(TALLOC_CTX *mem_ctx,
        cli->smb1.pid = (uint16_t)getpid();
        cli->smb1.vc_num = cli->smb1.pid;
        cli->smb1.tid = UINT16_MAX;
-       cli->smb1.uid = UID_FIELD_INVALID;
+       cli->smb1.session = smbXcli_session_create(cli, cli->conn);
+       if (cli->smb1.session == NULL) {
+               goto error;
+       }
 
        cli->initialised = 1;
        return cli;
@@ -398,13 +401,13 @@ uint16_t cli_state_set_tid(struct cli_state *cli, uint16_t tid)
 
 uint16_t cli_state_get_uid(struct cli_state *cli)
 {
-       return cli->smb1.uid;
+       return smb1cli_session_current_id(cli->smb1.session);
 }
 
 uint16_t cli_state_set_uid(struct cli_state *cli, uint16_t uid)
 {
-       uint16_t ret = cli->smb1.uid;
-       cli->smb1.uid = uid;
+       uint16_t ret = smb1cli_session_current_id(cli->smb1.session);
+       smb1cli_session_set_id(cli->smb1.session, uid);
        return ret;
 }
 
index 5dd7008c59774f6b53273b85cc015541920a3bae..a3ac816e8a72702832d099cf46ce7f30d9759795 100644 (file)
@@ -61,6 +61,7 @@ struct tevent_req *cli_trans_send(
        uint8_t clear_flags = 0;
        uint16_t additional_flags2 = 0;
        uint16_t clear_flags2 = 0;
+       uint16_t uid = 0;
 
        state = talloc_zero(mem_ctx, struct cli_trans_state);
        if (state == NULL) {
@@ -84,12 +85,13 @@ struct tevent_req *cli_trans_send(
                additional_flags2 |= FLAGS2_DFS_PATHNAMES;
        }
 
+       uid = cli_state_get_uid(cli);
        state->req = smb1cli_trans_send(state, ev,
                                        cli->conn, cmd,
                                        additional_flags, clear_flags,
                                        additional_flags2, clear_flags2,
                                        cli->timeout,
-                                       cli->smb1.pid, cli->smb1.tid, cli->smb1.uid,
+                                       cli->smb1.pid, cli->smb1.tid, uid,
                                        pipe_name, fid, function, flags,
                                        setup, num_setup, max_setup,
                                        param, num_param, max_param,
@@ -166,6 +168,7 @@ NTSTATUS cli_trans(TALLOC_CTX *mem_ctx, struct cli_state *cli,
        uint8_t clear_flags = 0;
        uint16_t additional_flags2 = 0;
        uint16_t clear_flags2 = 0;
+       uint16_t uid = 0;
 
        if (cli->case_sensitive) {
                clear_flags |= FLAG_CASELESS_PATHNAMES;
@@ -178,12 +181,13 @@ NTSTATUS cli_trans(TALLOC_CTX *mem_ctx, struct cli_state *cli,
                additional_flags2 |= FLAGS2_DFS_PATHNAMES;
        }
 
+       uid = cli_state_get_uid(cli);
        status = smb1cli_trans(mem_ctx,
                               cli->conn, trans_cmd,
                               additional_flags, clear_flags,
                               additional_flags2, clear_flags2,
                               cli->timeout,
-                              cli->smb1.pid, cli->smb1.tid, cli->smb1.uid,
+                              cli->smb1.pid, cli->smb1.tid, uid,
                               pipe_name, fid, function, flags,
                               setup, num_setup, max_setup,
                               param, num_param, max_param,