init.c: use list macro when removing pdus from the wait list
authorRonnie Sahlberg <ronniesahlberg@gmail.com>
Sun, 8 Jun 2014 14:21:43 +0000 (07:21 -0700)
committerRonnie Sahlberg <ronniesahlberg@gmail.com>
Sun, 8 Jun 2014 14:21:43 +0000 (07:21 -0700)
Use the macro when removing the pdus in the wait list from the queues.
Also make sure to remove them from the right queue, from waitqueue and not
the outqueue for PDUs we have already sent out.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
lib/init.c

index 782a7ea3edbac2da46c4c557d2de37a945ca24cb..bbed183fdf4fc8367d63d4630fdc96da2d2891dd 100644 (file)
@@ -235,7 +235,7 @@ void rpc_destroy_context(struct rpc_context *rpc)
 
        while((pdu = rpc->outqueue.head) != NULL) {
                pdu->cb(rpc, RPC_STATUS_CANCEL, NULL, pdu->private_data);
-               rpc->outqueue.head = pdu->next;
+               LIBNFS_LIST_REMOVE(&rpc->outqueue.head, pdu);
                rpc_free_pdu(rpc, pdu);
        }
 
@@ -244,7 +244,7 @@ void rpc_destroy_context(struct rpc_context *rpc)
 
                while((pdu = q->head) != NULL) {
                        pdu->cb(rpc, RPC_STATUS_CANCEL, NULL, pdu->private_data);
-                       rpc->outqueue.head = pdu->next;
+                       LIBNFS_LIST_REMOVE(&q->head, pdu);
                        rpc_free_pdu(rpc, pdu);
                }
        }