4 #include <stdlib.h> /* getenv, exit */
8 /* States a server can be in wrt request */
13 static int _rpcsvcstate = _IDLE; /* Set when a request is serviced */
14 static int _rpcsvccount = 0; /* Number of requests being serviced */
24 rpc_test_prog_1_svc(rqstp, transp)
25 struct svc_req *rqstp;
26 register SVCXPRT *transp;
29 char *rpc_test_echo_1_arg;
32 bool_t (*xdr_argument)(), (*xdr_result)();
36 switch (rqstp->rq_proc) {
38 (void) svc_sendreply(transp, xdr_void,
41 _rpcsvcstate = _SERVED;
45 xdr_argument = xdr_wrapstring;
46 xdr_result = xdr_wrapstring;
47 local = (char *(*)()) rpc_test_echo_1_svc;
51 svcerr_noproc(transp);
53 _rpcsvcstate = _SERVED;
56 (void) memset((char *)&argument, 0, sizeof (argument));
57 if (!svc_getargs(transp, xdr_argument, &argument)) {
58 svcerr_decode(transp);
60 _rpcsvcstate = _SERVED;
63 result = (*local)(&argument, rqstp);
64 if (result != NULL && !svc_sendreply(transp, xdr_result, result)) {
65 svcerr_systemerr(transp);
67 if (!svc_freeargs(transp, xdr_argument, &argument)) {
68 _msgout("unable to free arguments");
72 _rpcsvcstate = _SERVED;