diff options
Diffstat (limited to 'sys/nlm/nlm_prot_svc.c')
-rw-r--r-- | sys/nlm/nlm_prot_svc.c | 72 |
1 files changed, 44 insertions, 28 deletions
diff --git a/sys/nlm/nlm_prot_svc.c b/sys/nlm/nlm_prot_svc.c index 3b1a140..5141f87 100644 --- a/sys/nlm/nlm_prot_svc.c +++ b/sys/nlm/nlm_prot_svc.c @@ -57,8 +57,9 @@ nlm_prog_0(struct svc_req *rqstp, SVCXPRT *transp) switch (rqstp->rq_proc) { case NULLPROC: - (void) svc_sendreply(transp, + (void) svc_sendreply(rqstp, (xdrproc_t) xdr_void, (char *)NULL); + svc_freereq(rqstp); return; case NLM_SM_NOTIFY: @@ -68,19 +69,22 @@ nlm_prog_0(struct svc_req *rqstp, SVCXPRT *transp) break; default: - svcerr_noproc(transp); + svcerr_noproc(rqstp); + svc_freereq(rqstp); return; } (void) memset((char *)&argument, 0, sizeof (argument)); - if (!svc_getargs(transp, xdr_argument, (char *)(caddr_t) &argument)) { - svcerr_decode(transp); + if (!svc_getargs(rqstp, xdr_argument, (char *)(caddr_t) &argument)) { + svcerr_decode(rqstp); + svc_freereq(rqstp); return; } retval = (bool_t) (*local)((char *)&argument, (void *)&result, rqstp); - if (retval > 0 && !svc_sendreply(transp, xdr_result, (char *)&result)) { - svcerr_systemerr(transp); + if (retval > 0 && !svc_sendreply(rqstp, xdr_result, (char *)&result)) { + svcerr_systemerr(rqstp); } - if (!svc_freeargs(transp, xdr_argument, (char *)(caddr_t) &argument)) { + svc_freereq(rqstp); + if (!svc_freeargs(rqstp, xdr_argument, (char *)(caddr_t) &argument)) { printf("unable to free arguments"); //exit(1); } @@ -121,8 +125,9 @@ nlm_prog_1(struct svc_req *rqstp, SVCXPRT *transp) switch (rqstp->rq_proc) { case NULLPROC: - (void) svc_sendreply(transp, + (void) svc_sendreply(rqstp, (xdrproc_t) xdr_void, (char *)NULL); + svc_freereq(rqstp); return; case NLM_TEST: @@ -216,22 +221,25 @@ nlm_prog_1(struct svc_req *rqstp, SVCXPRT *transp) break; default: - svcerr_noproc(transp); + svcerr_noproc(rqstp); + svc_freereq(rqstp); return; } (void) memset((char *)&argument, 0, sizeof (argument)); - if (!svc_getargs(transp, xdr_argument, (char *)(caddr_t) &argument)) { - svcerr_decode(transp); + if (!svc_getargs(rqstp, xdr_argument, (char *)(caddr_t) &argument)) { + svcerr_decode(rqstp); + svc_freereq(rqstp); return; } retval = (bool_t) (*local)((char *)&argument, (void *)&result, rqstp); - if (retval > 0 && !svc_sendreply(transp, xdr_result, (char *)&result)) { - svcerr_systemerr(transp); + if (retval > 0 && !svc_sendreply(rqstp, xdr_result, (char *)&result)) { + svcerr_systemerr(rqstp); } - if (!svc_freeargs(transp, xdr_argument, (char *)(caddr_t) &argument)) { + if (!svc_freeargs(rqstp, xdr_argument, (char *)(caddr_t) &argument)) { printf("unable to free arguments"); //exit(1); } + svc_freereq(rqstp); if (!nlm_prog_1_freeresult(transp, xdr_result, (caddr_t) &result)) printf("unable to free results"); @@ -258,8 +266,9 @@ nlm_prog_3(struct svc_req *rqstp, SVCXPRT *transp) switch (rqstp->rq_proc) { case NULLPROC: - (void) svc_sendreply(transp, + (void) svc_sendreply(rqstp, (xdrproc_t) xdr_void, (char *)NULL); + svc_freereq(rqstp); return; case NLM_TEST: @@ -305,22 +314,25 @@ nlm_prog_3(struct svc_req *rqstp, SVCXPRT *transp) break; default: - svcerr_noproc(transp); + svcerr_noproc(rqstp); + svc_freereq(rqstp); return; } (void) memset((char *)&argument, 0, sizeof (argument)); - if (!svc_getargs(transp, xdr_argument, (char *)(caddr_t) &argument)) { - svcerr_decode(transp); + if (!svc_getargs(rqstp, xdr_argument, (char *)(caddr_t) &argument)) { + svcerr_decode(rqstp); + svc_freereq(rqstp); return; } retval = (bool_t) (*local)((char *)&argument, (void *)&result, rqstp); - if (retval > 0 && !svc_sendreply(transp, xdr_result, (char *)&result)) { - svcerr_systemerr(transp); + if (retval > 0 && !svc_sendreply(rqstp, xdr_result, (char *)&result)) { + svcerr_systemerr(rqstp); } - if (!svc_freeargs(transp, xdr_argument, (char *)(caddr_t) &argument)) { + if (!svc_freeargs(rqstp, xdr_argument, (char *)(caddr_t) &argument)) { printf("unable to free arguments"); //exit(1); } + svc_freereq(rqstp); if (!nlm_prog_3_freeresult(transp, xdr_result, (caddr_t) &result)) printf("unable to free results"); @@ -367,8 +379,9 @@ nlm_prog_4(struct svc_req *rqstp, SVCXPRT *transp) switch (rqstp->rq_proc) { case NULLPROC: - (void) svc_sendreply(transp, + (void) svc_sendreply(rqstp, (xdrproc_t) xdr_void, (char *)NULL); + svc_freereq(rqstp); return; case NLM4_TEST: @@ -486,22 +499,25 @@ nlm_prog_4(struct svc_req *rqstp, SVCXPRT *transp) break; default: - svcerr_noproc(transp); + svcerr_noproc(rqstp); + svc_freereq(rqstp); return; } (void) memset((char *)&argument, 0, sizeof (argument)); - if (!svc_getargs(transp, xdr_argument, (char *)(caddr_t) &argument)) { - svcerr_decode(transp); + if (!svc_getargs(rqstp, xdr_argument, (char *)(caddr_t) &argument)) { + svcerr_decode(rqstp); + svc_freereq(rqstp); return; } retval = (bool_t) (*local)((char *)&argument, (void *)&result, rqstp); - if (retval > 0 && !svc_sendreply(transp, xdr_result, (char *)&result)) { - svcerr_systemerr(transp); + if (retval > 0 && !svc_sendreply(rqstp, xdr_result, (char *)&result)) { + svcerr_systemerr(rqstp); } - if (!svc_freeargs(transp, xdr_argument, (char *)(caddr_t) &argument)) { + if (!svc_freeargs(rqstp, xdr_argument, (char *)(caddr_t) &argument)) { printf("unable to free arguments"); //exit(1); } + svc_freereq(rqstp); if (!nlm_prog_4_freeresult(transp, xdr_result, (caddr_t) &result)) printf("unable to free results"); |