Add an assert to track if we try to use an rpc_context after it has been destroyed
[deb_libnfs.git] / lib / pdu.c
index 597b44cf8f8d119db53effa6e56a5cb8149ea46f..7dc1ee317c6dbefcdaa5845f78efac0561be020a 100644 (file)
--- a/lib/pdu.c
+++ b/lib/pdu.c
@@ -28,6 +28,7 @@
 #include <string.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
+#include <assert.h>
 #include <errno.h>
 #include "slist.h"
 #include "libnfs-zdr.h"
@@ -40,9 +41,7 @@ struct rpc_pdu *rpc_allocate_pdu(struct rpc_context *rpc, int program, int versi
        struct rpc_pdu *pdu;
        struct rpc_msg msg;
 
-       if (rpc == NULL) {
-               return NULL;
-       }
+       assert(rpc->magic == RPC_CONTEXT_MAGIC);
 
        pdu = malloc(sizeof(struct rpc_pdu));
        if (pdu == NULL) {
@@ -81,8 +80,10 @@ struct rpc_pdu *rpc_allocate_pdu(struct rpc_context *rpc, int program, int versi
        return pdu;
 }
 
-void rpc_free_pdu(struct rpc_context *rpc _U_, struct rpc_pdu *pdu)
+void rpc_free_pdu(struct rpc_context *rpc, struct rpc_pdu *pdu)
 {
+       assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
        if (pdu->outdata.data != NULL) {
                free(pdu->outdata.data);
                pdu->outdata.data = NULL;
@@ -104,6 +105,8 @@ int rpc_queue_pdu(struct rpc_context *rpc, struct rpc_pdu *pdu)
 {
        int size, recordmarker;
 
+       assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
        size = zdr_getpos(&pdu->zdr);
 
        /* for udp we dont queue, we just send it straight away */
@@ -150,6 +153,8 @@ static int rpc_process_reply(struct rpc_context *rpc, struct rpc_pdu *pdu, ZDR *
 {
        struct rpc_msg msg;
 
+       assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
        memset(&msg, 0, sizeof(struct rpc_msg));
        msg.acpted_rply.ar_verf = _null_auth;
        if (pdu->zdr_decode_bufsize > 0) {
@@ -215,6 +220,8 @@ int rpc_process_pdu(struct rpc_context *rpc, char *buf, int size)
        unsigned int xid;
        char *reasbuf = NULL;
 
+       assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
        memset(&zdr, 0, sizeof(ZDR));
 
        zdrmem_create(&zdr, buf, size, ZDR_DECODE);