Diff for /libaitrpc/src/srv.c between versions 1.1.1.1.2.11 and 1.1.1.1.2.12

version 1.1.1.1.2.11, 2010/06/24 15:01:19 version 1.1.1.1.2.12, 2010/06/24 15:23:38
Line 14  rpc_srv_dispatchCall(void *arg) Line 14  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, *v = NULL;        rpc_val_t *vals = NULL, *v = NULL;
         rpc_func_t *f;          rpc_func_t *f;
         struct tagRPCCall *rpc;          struct tagRPCCall *rpc;
         struct tagRPCRet rrpc;          struct tagRPCRet rrpc;
         fd_set fds;          fd_set fds;
         u_char buf[BUFSIZ], *data;          u_char buf[BUFSIZ], *data;
        int ret, argc, Limit = 0;        int ret, argc = 0, Limit = 0;
         register int i;          register int i;
   
         if (!arg) {          if (!arg) {
Line 57  rpc_srv_dispatchCall(void *arg) Line 57  rpc_srv_dispatchCall(void *arg)
                 if (memcmp(&rpc->call_session, &s->srv_session, sizeof rpc->call_session)) {                  if (memcmp(&rpc->call_session, &s->srv_session, sizeof rpc->call_session)) {
                         rpc_SetErr(EINVAL, "Error:: get invalid RPC session ...\n");                          rpc_SetErr(EINVAL, "Error:: get invalid RPC session ...\n");
                         ret = -5;                          ret = -5;
                        break;                        goto makeReply;
                 }                  }
                 // RPC is OK! Go decapsulate variables ...                  // RPC is OK! Go decapsulate variables ...
                 if (rpc->call_argc) {                  if (rpc->call_argc) {
Line 74  rpc_srv_dispatchCall(void *arg) Line 74  rpc_srv_dispatchCall(void *arg)
                                                 v[i].val.string = (int8_t*) data;                                                  v[i].val.string = (int8_t*) data;
                                                 data += v[i].val_len + 1;                                                  data += v[i].val_len + 1;
                                                 break;                                                  break;
                                           case blob:
                                                   if (s->srv_blob.state == disable) {
                                                           rpc_SetErr(ENOTSUP, "Error:: BLOB server is disabled\n");
                                                           ret = -5;
                                                           goto makeReply;
                                                   }
                                         default:                                          default:
                                                 break;                                                  break;
                                 }                                  }
Line 91  rpc_srv_dispatchCall(void *arg) Line 97  rpc_srv_dispatchCall(void *arg)
                         else                          else
                                 argc = rpc_srv_getValsCall(f, &vals);                                  argc = rpc_srv_getValsCall(f, &vals);
   
   makeReply:
                 memcpy(&rrpc.ret_session, &rpc->call_session, sizeof rrpc.ret_session);                  memcpy(&rrpc.ret_session, &rpc->call_session, sizeof rrpc.ret_session);
                 rrpc.ret_tag = rpc->call_tag;                  rrpc.ret_tag = rpc->call_tag;
                 rrpc.ret_hash = rpc->call_hash;                  rrpc.ret_hash = rpc->call_hash;
Line 131  rpc_srv_dispatchCall(void *arg) Line 138  rpc_srv_dispatchCall(void *arg)
                                                 data += vals[i].val_len + 1;                                                  data += vals[i].val_len + 1;
                                                 Limit += vals[i].val_len + 1;                                                  Limit += vals[i].val_len + 1;
                                                 break;                                                  break;
                                           case blob:
                                                   if (s->srv_blob.state == disable) {
                                                           rpc_SetErr(ENOTSUP, "Error:: BLOB server is disabled\n");
                                                           rrpc.ret_retcode = ret = -5;
                                                           rrpc.ret_argc = 0;
                                                           break;
                                                   }
                                         default:                                          default:
                                                 break;                                                  break;
                                 }                                  }
Line 178  rpc_srv_dispatchVars(void *arg) Line 192  rpc_srv_dispatchVars(void *arg)
   
         cx = -1;          cx = -1;
         do {          do {
                   // check for disable service at this moment?
                   if (s->srv_blob.state == disable) {
                           ret = 0;
                           break;
                   }
   
                 FD_ZERO(&fds);                  FD_ZERO(&fds);
                 FD_SET(c->cli_sock, &fds);                  FD_SET(c->cli_sock, &fds);
                 ret = select(c->cli_sock + 1, &fds, NULL, NULL, NULL);                  ret = select(c->cli_sock + 1, &fds, NULL, NULL, NULL);
Line 206  rpc_srv_dispatchVars(void *arg) Line 226  rpc_srv_dispatchVars(void *arg)
                                 blob->hdr_seq != cx) {                                  blob->hdr_seq != cx) {
                         rpc_SetErr(EINVAL, "Error:: get invalid BLOB session in seq=%d...\n", blob->hdr_seq);                          rpc_SetErr(EINVAL, "Error:: get invalid BLOB session in seq=%d...\n", blob->hdr_seq);
                         ret = -5;                          ret = -5;
                        break;                        goto makeReply;
                 }                  }
                 // Go to proceed packet ...                  // Go to proceed packet ...
                 switch (blob->hdr_cmd) {                  switch (blob->hdr_cmd) {
Line 245  rpc_srv_dispatchVars(void *arg) Line 265  rpc_srv_dispatchVars(void *arg)
                                 ret = -7;                                  ret = -7;
                 }                  }
   
   makeReply:
                 // Replay to client!                  // Replay to client!
                 blob->hdr_cmd = ret < 0 ? error : ok;                  blob->hdr_cmd = ret < 0 ? error : ok;
                 blob->hdr_seq = ret;                  blob->hdr_seq = ret;
Line 404  rpc_srv_execBLOBServer(rpc_srv_t * __restrict srv) Line 425  rpc_srv_execBLOBServer(rpc_srv_t * __restrict srv)
         int ret;          int ret;
         struct timeval tv = { DEF_RPC_TIMEOUT, 0 };          struct timeval tv = { DEF_RPC_TIMEOUT, 0 };
   
        if (!srv || !srv->srv_blob.state) {        if (!srv || srv->srv_blob.state == disable) {
                 rpc_SetErr(EINVAL, "Error:: Invalid parameter can`t start BLOB server ...\n");                  rpc_SetErr(EINVAL, "Error:: Invalid parameter can`t start BLOB server ...\n");
                 return -1;                  return -1;
         }          }

Removed from v.1.1.1.1.2.11  
changed lines
  Added in v.1.1.1.1.2.12


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