Diff for /libaitrpc/src/srv.c between versions 1.12.2.5 and 1.12.2.7

version 1.12.2.5, 2012/11/19 10:29:02 version 1.12.2.7, 2012/11/19 14:51:52
Line 204  txPacket(sched_task_t *task) Line 204  txPacket(sched_task_t *task)
         if (ret == -1 || ret != wlen) {          if (ret == -1 || ret != wlen) {
                 /* close connection */                  /* close connection */
                 schedEvent(TASK_ROOT(task), cbProto[s->srv_proto][CB_CLOSECLIENT],                   schedEvent(TASK_ROOT(task), cbProto[s->srv_proto][CB_CLOSECLIENT], 
                                c, 42, NULL, 0);                                TASK_ARG(task), 42, NULL, 0);
         }          }
   
         return NULL;          return NULL;
Line 281  rxPacket(sched_task_t *task) Line 281  rxPacket(sched_task_t *task)
         if (rlen < 1) {          if (rlen < 1) {
                 /* close connection */                  /* close connection */
                 schedEvent(TASK_ROOT(task), cbProto[s->srv_proto][CB_CLOSECLIENT],                   schedEvent(TASK_ROOT(task), cbProto[s->srv_proto][CB_CLOSECLIENT], 
                                c, 42, NULL, 0);                                TASK_ARG(task), 42, NULL, 0);
                 return NULL;                  return NULL;
         } else {          } else {
                 rlen += off;    /* add reminded bytes from previous rxPacket, if exists! */                  rlen += off;    /* add reminded bytes from previous rxPacket, if exists! */
Line 387  txUDPPacket(sched_task_t *task) Line 387  txUDPPacket(sched_task_t *task)
         int ret, wlen = sizeof(struct tagRPCCall);          int ret, wlen = sizeof(struct tagRPCCall);
         struct timespec ts = { DEF_RPC_TIMEOUT, 0 };          struct timespec ts = { DEF_RPC_TIMEOUT, 0 };
   
        schedCancelby(TASK_ROOT(task), taskTIMER, CRITERIA_DATA, c, NULL);        schedCancelby(TASK_ROOT(task), taskTIMER, CRITERIA_DATA, TASK_ARG(task), NULL);
         schedTimer(TASK_ROOT(task), cbProto[s->srv_proto][CB_CLOSECLIENT],           schedTimer(TASK_ROOT(task), cbProto[s->srv_proto][CB_CLOSECLIENT], 
                        c, ts, c, 0);                         TASK_ARG(task), ts, TASK_ARG(task), 0);
   
         /* copy RPC header */          /* copy RPC header */
         memcpy(buf, TASK_DATA(task), wlen);          memcpy(buf, TASK_DATA(task), wlen);
Line 429  txUDPPacket(sched_task_t *task) Line 429  txUDPPacket(sched_task_t *task)
         if (ret == -1 || ret != wlen) {          if (ret == -1 || ret != wlen) {
                 /* close connection */                  /* close connection */
                 schedEvent(TASK_ROOT(task), cbProto[s->srv_proto][CB_CLOSECLIENT],                   schedEvent(TASK_ROOT(task), cbProto[s->srv_proto][CB_CLOSECLIENT], 
                                c, 42, NULL, 0);                                 TASK_ARG(task), 42, NULL, 0);
         }          }
   
         return NULL;          return NULL;
Line 457  rxUDPPacket(sched_task_t *task) Line 457  rxUDPPacket(sched_task_t *task)
         if (!c)          if (!c)
                 goto end;                  goto end;
         else {          else {
                /* armed timer for close stateless connection */                memcpy(&c->cli_sa, &sa, sizeof c->cli_sa);
                 memcpy(AIT_GET_BUF(&c->cli_buf), buf, AIT_LEN(&c->cli_buf));                  memcpy(AIT_GET_BUF(&c->cli_buf), buf, AIT_LEN(&c->cli_buf));
                   /* armed timer for close stateless connection */
                 schedCancelby(TASK_ROOT(task), taskTIMER, CRITERIA_DATA, c, NULL);                  schedCancelby(TASK_ROOT(task), taskTIMER, CRITERIA_DATA, c, NULL);
                 schedTimer(TASK_ROOT(task), cbProto[srv->srv_proto][CB_CLOSECLIENT],                   schedTimer(TASK_ROOT(task), cbProto[srv->srv_proto][CB_CLOSECLIENT], 
                                 c, ts, c, 0);                                  c, ts, c, 0);
Line 503  rxUDPPacket(sched_task_t *task) Line 504  rxUDPPacket(sched_task_t *task)
                         rpc->call_rep.eno = RPC_ERROR(errno);                          rpc->call_rep.eno = RPC_ERROR(errno);
                 } else {                  } else {
                         /* execute RPC call */                          /* execute RPC call */
                        schedEvent(TASK_ROOT(task), execCall, TASK_ARG(task), off, NULL, 0);                        schedEvent(TASK_ROOT(task), execCall, c, off, NULL, 0);
                 }                  }
   
                 /* send RPC reply */                  /* send RPC reply */
                 if (!noreply)                  if (!noreply)
                         schedWrite(TASK_ROOT(task), cbProto[srv->srv_proto][CB_TXPACKET],                           schedWrite(TASK_ROOT(task), cbProto[srv->srv_proto][CB_TXPACKET], 
                                        TASK_ARG(task), TASK_FD(task), rpc, len);                                        c, TASK_FD(task), rpc, len);
   
                 off += len;                  off += len;
         } while (rlen > 0);          } while (rlen > 0);
Line 924  rpc_srv_initServer(u_int regProgID, u_char regProcID,  Line 925  rpc_srv_initServer(u_int regProgID, u_char regProcID, 
                 rpc_SetErr(EINVAL, "Invalid parameters can`t init RPC server");                  rpc_SetErr(EINVAL, "Invalid parameters can`t init RPC server");
                 return NULL;                  return NULL;
         }          }
         if (!proto)  
                 proto = SOCK_STREAM;  
         if (!io_gethostbyname(csHost, Port, &sa))          if (!io_gethostbyname(csHost, Port, &sa))
                 return NULL;                  return NULL;
         if (!Port)          if (!Port)
                 Port = RPC_DEFPORT;                  Port = RPC_DEFPORT;
           if (!proto)
                   proto = SOCK_STREAM;
         if (netBuf < RPC_MIN_BUFSIZ)          if (netBuf < RPC_MIN_BUFSIZ)
                 netBuf = BUFSIZ;                  netBuf = BUFSIZ;
         else          else
Line 1069  rpc_srv_loopServer(rpc_srv_t * __restrict srv) Line 1070  rpc_srv_loopServer(rpc_srv_t * __restrict srv)
                 return -1;                  return -1;
         }          }
   
        if (listen(srv->srv_server.cli_sock, io_arraySize(srv->srv_clients)) == -1) {        if (srv->srv_proto == SOCK_STREAM)
                LOGERR;                if (listen(srv->srv_server.cli_sock, 
                return -1;                                        io_arraySize(srv->srv_clients)) == -1) {
        }                        LOGERR;
                         return -1;
                 }
   
         if (!schedRead(srv->srv_root, cbProto[srv->srv_proto][CB_ACCEPTCLIENT], srv,           if (!schedRead(srv->srv_root, cbProto[srv->srv_proto][CB_ACCEPTCLIENT], srv, 
                                 srv->srv_server.cli_sock, NULL, 0)) {                                  srv->srv_server.cli_sock, NULL, 0)) {

Removed from v.1.12.2.5  
changed lines
  Added in v.1.12.2.7


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