s3:libsmb: move read_smb_send/recv() static in async_smb.c
authorStefan Metzmacher <metze@samba.org>
Wed, 13 May 2009 06:33:33 +0000 (08:33 +0200)
committerStefan Metzmacher <metze@samba.org>
Wed, 13 May 2009 16:27:50 +0000 (18:27 +0200)
metze

source3/include/proto.h
source3/lib/util_sock.c
source3/libsmb/async_smb.c

index 95613ad54899ffd2067100f3b161ce3a1eed0e27..fd49050c3827b07c92217dc8808cf8b90db19b74 100644 (file)
@@ -1415,11 +1415,6 @@ int create_pipe_sock(const char *socket_dir,
                     mode_t dir_perms);
 const char *get_mydnsfullname(void);
 bool is_myname_or_ipaddr(const char *s);
-struct tevent_req *read_smb_send(TALLOC_CTX *mem_ctx,
-                                struct tevent_context *ev,
-                                int fd);
-ssize_t read_smb_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
-                     uint8_t **pbuf, int *perrno);
 struct tevent_req *getaddrinfo_send(TALLOC_CTX *mem_ctx,
                                    struct tevent_context *ev,
                                    struct fncall_context *ctx,
index 92e373b4eac6478ea844bbf963794aa4d109be4f..1d7a82d7a5797ccc7303ff4153dce43cfaa59a48 100644 (file)
@@ -1967,93 +1967,6 @@ bool is_myname_or_ipaddr(const char *s)
        return false;
 }
 
-/*
- * Read an smb packet asynchronously, discard keepalives
- */
-
-struct read_smb_state {
-       struct tevent_context *ev;
-       int fd;
-       uint8_t *buf;
-};
-
-static ssize_t read_smb_more(uint8_t *buf, size_t buflen, void *private_data);
-static void read_smb_done(struct tevent_req *subreq);
-
-struct tevent_req *read_smb_send(TALLOC_CTX *mem_ctx,
-                                struct tevent_context *ev,
-                                int fd)
-{
-       struct tevent_req *result, *subreq;
-       struct read_smb_state *state;
-
-       result = tevent_req_create(mem_ctx, &state, struct read_smb_state);
-       if (result == NULL) {
-               return NULL;
-       }
-       state->ev = ev;
-       state->fd = fd;
-
-       subreq = read_packet_send(state, ev, fd, 4, read_smb_more, NULL);
-       if (subreq == NULL) {
-               goto fail;
-       }
-       tevent_req_set_callback(subreq, read_smb_done, result);
-       return result;
- fail:
-       TALLOC_FREE(result);
-       return NULL;
-}
-
-static ssize_t read_smb_more(uint8_t *buf, size_t buflen, void *private_data)
-{
-       if (buflen > 4) {
-               return 0;       /* We've been here, we're done */
-       }
-       return smb_len_large(buf);
-}
-
-static void read_smb_done(struct tevent_req *subreq)
-{
-       struct tevent_req *req = tevent_req_callback_data(
-               subreq, struct tevent_req);
-       struct read_smb_state *state = tevent_req_data(
-               req, struct read_smb_state);
-       ssize_t len;
-       int err;
-
-       len = read_packet_recv(subreq, state, &state->buf, &err);
-       TALLOC_FREE(subreq);
-       if (len == -1) {
-               tevent_req_error(req, err);
-               return;
-       }
-
-       if (CVAL(state->buf, 0) == SMBkeepalive) {
-               subreq = read_packet_send(state, state->ev, state->fd, 4,
-                                         read_smb_more, NULL);
-               if (tevent_req_nomem(subreq, req)) {
-                       return;
-               }
-               tevent_req_set_callback(subreq, read_smb_done, req);
-               return;
-       }
-       tevent_req_done(req);
-}
-
-ssize_t read_smb_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
-                     uint8_t **pbuf, int *perrno)
-{
-       struct read_smb_state *state = tevent_req_data(
-               req, struct read_smb_state);
-
-       if (tevent_req_is_unix_error(req, perrno)) {
-               return -1;
-       }
-       *pbuf = talloc_move(mem_ctx, &state->buf);
-       return talloc_get_size(*pbuf);
-}
-
 struct getaddrinfo_state {
        const char *node;
        const char *service;
index 7474959902b08d1505453932bbb9fe4913c6fb05..7afba0dae991d696b316677d9cfc2073391772fb 100644 (file)
 
 #include "includes.h"
 
+/*
+ * Read an smb packet asynchronously, discard keepalives
+ */
+
+struct read_smb_state {
+       struct tevent_context *ev;
+       int fd;
+       uint8_t *buf;
+};
+
+static ssize_t read_smb_more(uint8_t *buf, size_t buflen, void *private_data);
+static void read_smb_done(struct tevent_req *subreq);
+
+static struct tevent_req *read_smb_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       int fd)
+{
+       struct tevent_req *result, *subreq;
+       struct read_smb_state *state;
+
+       result = tevent_req_create(mem_ctx, &state, struct read_smb_state);
+       if (result == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->fd = fd;
+
+       subreq = read_packet_send(state, ev, fd, 4, read_smb_more, NULL);
+       if (subreq == NULL) {
+               goto fail;
+       }
+       tevent_req_set_callback(subreq, read_smb_done, result);
+       return result;
+ fail:
+       TALLOC_FREE(result);
+       return NULL;
+}
+
+static ssize_t read_smb_more(uint8_t *buf, size_t buflen, void *private_data)
+{
+       if (buflen > 4) {
+               return 0;       /* We've been here, we're done */
+       }
+       return smb_len_large(buf);
+}
+
+static void read_smb_done(struct tevent_req *subreq)
+{
+       struct tevent_req *req = tevent_req_callback_data(
+               subreq, struct tevent_req);
+       struct read_smb_state *state = tevent_req_data(
+               req, struct read_smb_state);
+       ssize_t len;
+       int err;
+
+       len = read_packet_recv(subreq, state, &state->buf, &err);
+       TALLOC_FREE(subreq);
+       if (len == -1) {
+               tevent_req_error(req, err);
+               return;
+       }
+
+       if (CVAL(state->buf, 0) == SMBkeepalive) {
+               subreq = read_packet_send(state, state->ev, state->fd, 4,
+                                         read_smb_more, NULL);
+               if (tevent_req_nomem(subreq, req)) {
+                       return;
+               }
+               tevent_req_set_callback(subreq, read_smb_done, req);
+               return;
+       }
+       tevent_req_done(req);
+}
+
+static ssize_t read_smb_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
+                            uint8_t **pbuf, int *perrno)
+{
+       struct read_smb_state *state = tevent_req_data(
+               req, struct read_smb_state);
+
+       if (tevent_req_is_unix_error(req, perrno)) {
+               return -1;
+       }
+       *pbuf = talloc_move(mem_ctx, &state->buf);
+       return talloc_get_size(*pbuf);
+}
+
 /**
  * Fetch an error out of a NBT packet
  * @param[in] buf      The SMB packet