s3:libsmb: s/struct event_context/struct tevent_context
[samba.git] / source3 / libsmb / clioplock.c
index a708453877cb7b116eda0563677bae0adc902e5c..0b19748bf6e4ae691be59927a575ee0c7b60353f 100644 (file)
@@ -1,18 +1,18 @@
-/* 
+/*
    Unix SMB/CIFS implementation.
    SMB client oplock functions
    Copyright (C) Andrew Tridgell 2001
-   
+
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
@@ -21,6 +21,7 @@
 #include "../lib/util/tevent_ntstatus.h"
 #include "async_smb.h"
 #include "libsmb/libsmb.h"
+#include "../libcli/smb/smbXcli_base.h"
 
 struct cli_smb_oplock_break_waiter_state {
        uint16_t fnum;
@@ -30,7 +31,7 @@ struct cli_smb_oplock_break_waiter_state {
 static void cli_smb_oplock_break_waiter_done(struct tevent_req *subreq);
 
 struct tevent_req *cli_smb_oplock_break_waiter_send(TALLOC_CTX *mem_ctx,
-                                                   struct event_context *ev,
+                                                   struct tevent_context *ev,
                                                    struct cli_state *cli)
 {
        struct tevent_req *req, *subreq;
@@ -46,13 +47,14 @@ struct tevent_req *cli_smb_oplock_break_waiter_send(TALLOC_CTX *mem_ctx,
         * Create a fake SMB request that we will never send out. This is only
         * used to be set into the pending queue with the right mid.
         */
-       subreq = cli_smb_req_create(mem_ctx, ev, cli, 0, 0, 0, NULL, 0, NULL);
+       subreq = smb1cli_req_create(mem_ctx, ev, cli->conn, 0, 0, 0, 0, 0, 0,
+                                   0, NULL, NULL, 0, NULL, 0, NULL);
        if (tevent_req_nomem(subreq, req)) {
                return tevent_req_post(req, ev);
        }
-       cli_smb_req_set_mid(subreq, 0xffff);
+       smb1cli_req_set_mid(subreq, 0xffff);
 
-       if (!cli_smb_req_set_pending(subreq)) {
+       if (!smbXcli_req_set_pending(subreq)) {
                tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
                return tevent_req_post(req, ev);
        }
@@ -66,20 +68,31 @@ static void cli_smb_oplock_break_waiter_done(struct tevent_req *subreq)
                subreq, struct tevent_req);
        struct cli_smb_oplock_break_waiter_state *state = tevent_req_data(
                req, struct cli_smb_oplock_break_waiter_state);
+       struct iovec *iov;
        uint8_t wct;
        uint16_t *vwv;
-       uint32_t num_bytes;
-       uint8_t *bytes;
-       uint8_t *inbuf;
        NTSTATUS status;
 
-       status = cli_smb_recv(subreq, state, &inbuf, 8, &wct, &vwv,
-                             &num_bytes, &bytes);
+       status = smb1cli_req_recv(subreq, state,
+                                 &iov, /* piov */
+                                 NULL, /* phdr */
+                                 &wct,
+                                 &vwv,
+                                 NULL, /* pvwv_offset */
+                                 NULL, /* pnum_bytes */
+                                 NULL, /* pbytes */
+                                 NULL, /* pbytes_offset */
+                                 NULL, /* pinbuf */
+                                 NULL, 0); /* expected */
        TALLOC_FREE(subreq);
        if (!NT_STATUS_IS_OK(status)) {
                tevent_req_nterror(req, status);
                return;
        }
+       if (wct < 8) {
+               tevent_req_nterror(req, NT_STATUS_INVALID_NETWORK_RESPONSE);
+               return;
+       }
        state->fnum = SVAL(vwv+2, 0);
        state->level = CVAL(vwv+3, 1);
        tevent_req_done(req);