Diff for /libaitrpc/src/srv.c between versions 1.4 and 1.4.2.1

version 1.4, 2011/08/29 22:37:06 version 1.4.2.1, 2011/08/29 23:26:56
Line 51  rpc_srv_dispatchCall(void *arg) Line 51  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;        ait_val_t *vals = NULL, *v = NULL;
         rpc_func_t *f = NULL;          rpc_func_t *f = NULL;
         struct tagRPCCall *rpc;          struct tagRPCCall *rpc;
         struct tagRPCRet *rrpc;          struct tagRPCRet *rrpc;
Line 106  rpc_srv_dispatchCall(void *arg) Line 106  rpc_srv_dispatchCall(void *arg)
                         Limit = sizeof(struct tagRPCCall);                          Limit = sizeof(struct tagRPCCall);
                 /* RPC is OK! Go decapsulate variables ... */                  /* RPC is OK! Go decapsulate variables ... */
                 if (rpc->call_argc) {                  if (rpc->call_argc) {
                        v = (rpc_val_t*) (buf + Limit);                        v = (ait_val_t*) (buf + Limit);
                         /* check RPC packet length */                          /* check RPC packet length */
                        if (rpc->call_argc * sizeof(rpc_val_t) > sizeof buf - Limit) {                        if (rpc->call_argc * sizeof(ait_val_t) > sizeof buf - Limit) {
                                 rpc_SetErr(EMSGSIZE, "Error:: too long RPC packet ...\n");                                  rpc_SetErr(EMSGSIZE, "Error:: too long RPC packet ...\n");
                                 ret = -5;                                  ret = -5;
                                 goto makeReply;                                  goto makeReply;
                         } else                          } else
                                Limit += rpc->call_argc * sizeof(rpc_val_t);                                Limit += rpc->call_argc * sizeof(ait_val_t);
                         /* RPC received variables types OK! */                          /* RPC received variables types OK! */
                        data = (u_char*) v + rpc->call_argc * sizeof(rpc_val_t);                        data = (u_char*) v + rpc->call_argc * sizeof(ait_val_t);
                         for (i = 0; i < rpc->call_argc; i++) {                          for (i = 0; i < rpc->call_argc; i++) {
                                 switch (v[i].val_type) {                                  switch (v[i].val_type) {
                                         case buffer:                                          case buffer:
Line 183  makeReply: Line 183  makeReply:
                 rrpc->ret_argc = argc;                  rrpc->ret_argc = argc;
   
                 if (argc && vals) {                  if (argc && vals) {
                        v = (rpc_val_t*) (buf + Limit);                        v = (ait_val_t*) (buf + Limit);
                        if (argc * sizeof(rpc_val_t) > sizeof buf - Limit) {                        if (argc * sizeof(ait_val_t) > sizeof buf - Limit) {
                                 for (i = 0; i < argc; i++)                                  for (i = 0; i < argc; i++)
                                        RPC_FREE_VAL(&vals[i]);                                        AIT_FREE_VAL(&vals[i]);
                                 rpc_srv_freeVars(f);                                  rpc_srv_freeVars(f);
                                 vals = NULL;                                  vals = NULL;
                                 argc = 0;                                  argc = 0;
Line 194  makeReply: Line 194  makeReply:
                                 rpc_SetErr(EMSGSIZE, "Error:: in prepare RPC packet values (-7) ...\n");                                  rpc_SetErr(EMSGSIZE, "Error:: in prepare RPC packet values (-7) ...\n");
                                 goto makeReply;                                  goto makeReply;
                         } else                          } else
                                Limit += argc * sizeof(rpc_val_t);                                Limit += argc * sizeof(ait_val_t);
                        memcpy(v, vals, argc * sizeof(rpc_val_t));                        memcpy(v, vals, argc * sizeof(ait_val_t));
                        data = (u_char*) v + argc * sizeof(rpc_val_t);                        data = (u_char*) v + argc * sizeof(ait_val_t);
                         for (ret = i = 0; i < argc; i++) {                          for (ret = i = 0; i < argc; i++) {
                                 switch (vals[i].val_type) {                                  switch (vals[i].val_type) {
                                         case buffer:                                          case buffer:
Line 240  makeReply: Line 240  makeReply:
                                                 break;                                                  break;
                                 }                                  }
   
                                RPC_FREE_VAL(&vals[i]);                                AIT_FREE_VAL(&vals[i]);
                         }                          }
                         rpc_srv_freeVars(f);                          rpc_srv_freeVars(f);
                         vals = NULL;                          vals = NULL;
Line 850  rpc_srv_execServer(rpc_srv_t * __restrict srv) Line 850  rpc_srv_execServer(rpc_srv_t * __restrict srv)
  */   */
 int  int
 rpc_srv_execCall(rpc_func_t * __restrict call, struct tagRPCCall * __restrict rpc,   rpc_srv_execCall(rpc_func_t * __restrict call, struct tagRPCCall * __restrict rpc, 
                rpc_val_t * __restrict args)                ait_val_t * __restrict args)
 {  {
         void *dl;          void *dl;
         rpc_callback_t func;          rpc_callback_t func;

Removed from v.1.4  
changed lines
  Added in v.1.4.2.1


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