Revert "FAILS!!! why??? libcli/nbt: avoid talloc_reference() in nbt_name_*_send()"
[metze/samba/wip.git] / libcli / nbt / nbtsocket.c
index 6c627398418e55722e00275601015a33e2a09e6c..711e39cbdc5a08c7714eda137dd8a2f5eb8d3b25 100644 (file)
@@ -45,10 +45,7 @@ static int nbt_name_request_destructor(struct nbt_name_request *req)
                idr_remove(req->nbtsock->idr, req->name_trn_id);
                req->name_trn_id = 0;
        }
-       if (req->te) {
-               talloc_free(req->te);
-               req->te = NULL;
-       }
+       TALLOC_FREE(req->te);
        if (req->nbtsock->send_queue == NULL) {
                TEVENT_FD_NOT_WRITEABLE(req->nbtsock->fde);
        }
@@ -127,8 +124,7 @@ static void nbt_name_socket_timeout(struct tevent_context *ev, struct tevent_tim
                                           nbt_name_socket_timeout, req);
                if (req->state != NBT_REQUEST_SEND) {
                        req->state = NBT_REQUEST_SEND;
-                       DLIST_ADD_END(req->nbtsock->send_queue, req,
-                                     struct nbt_name_request *);
+                       DLIST_ADD_END(req->nbtsock->send_queue, req);
                }
                TEVENT_FD_WRITEABLE(req->nbtsock->fde);
                return;
@@ -343,13 +339,12 @@ _PUBLIC_ struct nbt_name_socket *nbt_name_socket_init(TALLOC_CTX *mem_ctx,
        nbtsock->event_ctx = event_ctx;
        if (nbtsock->event_ctx == NULL) goto failed;
 
-       status = socket_create("ip", SOCKET_TYPE_DGRAM, &nbtsock->sock, 0);
+       status = socket_create(nbtsock, "ip", SOCKET_TYPE_DGRAM,
+                              &nbtsock->sock, 0);
        if (!NT_STATUS_IS_OK(status)) goto failed;
 
        socket_set_option(nbtsock->sock, "SO_BROADCAST", "1");
 
-       talloc_steal(nbtsock, nbtsock->sock);
-
        nbtsock->idr = idr_init(nbtsock);
        if (nbtsock->idr == NULL) goto failed;
 
@@ -418,7 +413,7 @@ struct nbt_name_request *nbt_name_request_send(struct nbt_name_socket *nbtsock,
                                       (ndr_push_flags_fn_t)ndr_push_nbt_name_packet);
        if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) goto failed;
 
-       DLIST_ADD_END(nbtsock->send_queue, req, struct nbt_name_request *);
+       DLIST_ADD_END(nbtsock->send_queue, req);
 
        if (DEBUGLVL(10)) {
                DEBUG(10,("Queueing nbt packet to %s:%d\n",
@@ -469,7 +464,7 @@ _PUBLIC_ NTSTATUS nbt_name_reply_send(struct nbt_name_socket *nbtsock,
                return ndr_map_error2ntstatus(ndr_err);
        }
 
-       DLIST_ADD_END(nbtsock->send_queue, req, struct nbt_name_request *);
+       DLIST_ADD_END(nbtsock->send_queue, req);
 
        TEVENT_FD_WRITEABLE(nbtsock->fde);