Diff for /libaitrpc/src/srv.c between versions 1.2.2.2 and 1.2.2.5

version 1.2.2.2, 2011/07/14 01:25:11 version 1.2.2.5, 2011/07/14 02:36:57
Line 52  rpc_srv_dispatchCall(void *arg) Line 52  rpc_srv_dispatchCall(void *arg)
         rpc_cli_t *c = arg;          rpc_cli_t *c = arg;
         rpc_srv_t *s;          rpc_srv_t *s;
         rpc_val_t *vals = NULL, *v = NULL;          rpc_val_t *vals = NULL, *v = NULL;
        rpc_func_t *f;        rpc_func_t *f = NULL;
         struct tagRPCCall *rpc;          struct tagRPCCall *rpc;
         struct tagRPCRet *rrpc;          struct tagRPCRet *rrpc;
           rpc_sess_t ses = { 0 };
         fd_set fds;          fd_set fds;
         u_char buf[BUFSIZ], *data;          u_char buf[BUFSIZ], *data;
         int ret, argc = 0, Limit = 0;          int ret, argc = 0, Limit = 0;
Line 147  rpc_srv_dispatchCall(void *arg) Line 148  rpc_srv_dispatchCall(void *arg)
   
                 argc = 0;                  argc = 0;
                 vals = NULL;                  vals = NULL;
                   memcpy(&ses, &rpc->call_session, sizeof ses);
                 if (!(f = rpc_srv_getCall(s, rpc->call_tag, rpc->call_hash))) {                  if (!(f = rpc_srv_getCall(s, rpc->call_tag, rpc->call_hash))) {
                         rpc_SetErr(EINVAL, "Error:: call not found into RPC server ...\n");                          rpc_SetErr(EINVAL, "Error:: call not found into RPC server ...\n");
                         ret = -6;                          ret = -6;
Line 155  rpc_srv_dispatchCall(void *arg) Line 157  rpc_srv_dispatchCall(void *arg)
                                 ret = -9;                                  ret = -9;
                         else                          else
                                 argc = rpc_srv_getValsCall(f, &vals);                                  argc = rpc_srv_getValsCall(f, &vals);
   
 makeReply:  makeReply:
                 memset(buf, 0, BUFSIZ);                  memset(buf, 0, BUFSIZ);
                 rrpc = (struct tagRPCRet*) buf;                  rrpc = (struct tagRPCRet*) buf;
                 Limit = sizeof(struct tagRPCRet);                  Limit = sizeof(struct tagRPCRet);
   
                memcpy(&rrpc->ret_session, &rpc->call_session, sizeof rrpc->ret_session);                memcpy(&rrpc->ret_session, &ses, sizeof(rpc_sess_t));
                 rrpc->ret_tag = rpc->call_tag;                  rrpc->ret_tag = rpc->call_tag;
                 rrpc->ret_hash = rpc->call_hash;                  rrpc->ret_hash = rpc->call_hash;
                 rrpc->ret_errno = rpc_Errno;                  rrpc->ret_errno = rpc_Errno;
Line 173  makeReply: Line 174  makeReply:
                         if (argc * sizeof(rpc_val_t) > BUFSIZ - Limit) {                          if (argc * sizeof(rpc_val_t) > BUFSIZ - Limit) {
                                 for (i = 0; i < argc; i++)                                  for (i = 0; i < argc; i++)
                                         RPC_FREE_VAL(&vals[i]);                                          RPC_FREE_VAL(&vals[i]);
                                free(vals);                                rpc_srv_freeValsCall(f);
                                 vals = NULL;                                  vals = NULL;
                                 argc = 0;                                  argc = 0;
                                 ret = -7;                                  ret = -7;
Line 221  makeReply: Line 222  makeReply:
                                 }                                  }
   
                                 RPC_FREE_VAL(&vals[i]);                                  RPC_FREE_VAL(&vals[i]);
                                 free(vals);  
                                 vals = NULL;  
                         }                          }
                           rpc_srv_freeValsCall(f);
                           vals = NULL;
                           argc = 0;
                 }                  }
   
                 if ((ret = send(c->cli_sock, buf, Limit, 0)) == -1) {                  if ((ret = send(c->cli_sock, buf, Limit, 0)) == -1) {

Removed from v.1.2.2.2  
changed lines
  Added in v.1.2.2.5


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>