diff options
author | Stefan Metzmacher <metze@sernet.de> | 2008-01-16 14:51:56 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2009-01-19 07:05:42 +0100 |
commit | ebab6d6ce40ec4d64126964c0223aa2bdef99094 (patch) | |
tree | f934f966e8b64369a652a17c13c409dae8637450 /libcli/nbt/nbtsocket.c | |
parent | 26c48098e6c387cc76b123a78d50f23518d734cf (diff) | |
download | samba-ebab6d6ce40ec4d64126964c0223aa2bdef99094.tar.gz samba-ebab6d6ce40ec4d64126964c0223aa2bdef99094.tar.xz samba-ebab6d6ce40ec4d64126964c0223aa2bdef99094.zip |
libcli/nbt: add nbt_name_socket_handle_response_packet()
Move the last part of nbt_name_socket_recv() into
a new function nbt_name_socket_handle_response_packet()
so that it can be reused by an unexpected handler.
metze
(from samba4wins tree cb0377f3b95e50c84fac999a49dde80acc933124)
Diffstat (limited to 'libcli/nbt/nbtsocket.c')
-rw-r--r-- | libcli/nbt/nbtsocket.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/libcli/nbt/nbtsocket.c b/libcli/nbt/nbtsocket.c index 4816b816fe2..0d269faa0ef 100644 --- a/libcli/nbt/nbtsocket.c +++ b/libcli/nbt/nbtsocket.c @@ -231,6 +231,16 @@ static void nbt_name_socket_recv(struct nbt_name_socket *nbtsock) return; } + talloc_steal(req, packet); + talloc_steal(req, src); + talloc_free(tmp_ctx); + nbt_name_socket_handle_response_packet(req, packet, src); +} + +void nbt_name_socket_handle_response_packet(struct nbt_name_request *req, + struct nbt_name_packet *packet, + struct socket_address *src) +{ /* if this is a WACK response, this we need to go back to waiting, but perhaps increase the timeout */ if ((packet->operation & NBT_OPCODE) == NBT_OPCODE_WACK) { @@ -266,7 +276,6 @@ static void nbt_name_socket_recv(struct nbt_name_socket *nbtsock) req->te = event_add_timed(req->nbtsock->event_ctx, req, timeval_current_ofs(req->timeout, 0), nbt_name_socket_timeout, req); - talloc_free(tmp_ctx); return; } @@ -288,7 +297,6 @@ static void nbt_name_socket_recv(struct nbt_name_socket *nbtsock) /* if we don't want multiple replies then we are done */ if (req->allow_multiple_replies && req->num_replies < NBT_MAX_REPLIES) { - talloc_free(tmp_ctx); return; } @@ -297,7 +305,6 @@ static void nbt_name_socket_recv(struct nbt_name_socket *nbtsock) req->status = NT_STATUS_OK; done: - talloc_free(tmp_ctx); if (req->async.fn) { req->async.fn(req); } |