Diff for /libaitrpc/src/srv.c between versions 1.27.2.2 and 1.28.2.1

version 1.27.2.2, 2015/07/02 23:21:06 version 1.28.2.1, 2016/06/23 15:59:52
Line 312  rxPacket(sched_task_t *task) Line 312  rxPacket(sched_task_t *task)
         u_short crc;          u_short crc;
 #endif  #endif
         u_char *buf = AIT_GET_BUF(&c->cli_buf);          u_char *buf = AIT_GET_BUF(&c->cli_buf);
        u_char b[sizeof(struct tagRPCCall)];        struct tagRPCCall b, *rpc = (struct tagRPCCall*) buf;
        struct tagRPCCall *rpc = (struct tagRPCCall*) buf; 
 #ifdef TCP_SESSION_TIMEOUT  #ifdef TCP_SESSION_TIMEOUT
         struct timespec ts = { DEF_RPC_TIMEOUT, 0 };          struct timespec ts = { DEF_RPC_TIMEOUT, 0 };
   
Line 323  rxPacket(sched_task_t *task) Line 322  rxPacket(sched_task_t *task)
 #endif  #endif
   
         /* prepare rx */          /* prepare rx */
        len = recv(TASK_FD(task), b, sizeof b, MSG_PEEK);        len = recv(TASK_FD(task), &b, sizeof b, MSG_PEEK);
         if (len == sizeof b)          if (len == sizeof b)
                rlen = ntohl(((struct tagRPCCall*) b)->call_len);                rlen = ntohl(b.call_len);
   
         rlen = recv(TASK_FD(task), buf, rlen, 0);          rlen = recv(TASK_FD(task), buf, rlen, 0);
         if (rlen == -1) {          if (rlen == -1) {
Line 524  rxUDPPacket(sched_task_t *task) Line 523  rxUDPPacket(sched_task_t *task)
   
         /* receive connect packet */          /* receive connect packet */
         AIT_SET_BUF(&b, NULL, srv->srv_netbuf);          AIT_SET_BUF(&b, NULL, srv->srv_netbuf);
        salen = sa.ss.ss_len = (u_char) sizeof(sockaddr_t);        salen = sa.ss.ss_len = (u_char) MIN(sizeof(sockaddr_t), 0xff);
         rlen = recvfrom(TASK_FD(task), AIT_GET_BUF(&b), AIT_LEN(&b), 0, &sa.sa, &salen);          rlen = recvfrom(TASK_FD(task), AIT_GET_BUF(&b), AIT_LEN(&b), 0, &sa.sa, &salen);
         rpc = (struct tagRPCCall*) AIT_GET_BUF(&b);          rpc = (struct tagRPCCall*) AIT_GET_BUF(&b);
         if (rlen < sizeof(struct tagRPCCall))          if (rlen < sizeof(struct tagRPCCall))
Line 664  rxRAWPacket(sched_task_t *task) Line 663  rxRAWPacket(sched_task_t *task)
   
         /* receive connect packet */          /* receive connect packet */
         AIT_SET_BUF(&b, NULL, srv->srv_netbuf);          AIT_SET_BUF(&b, NULL, srv->srv_netbuf);
        salen = sa.ss.ss_len = (u_char) sizeof(sockaddr_t);        salen = sa.ss.ss_len = (u_char) MIN(sizeof(sockaddr_t), 0xff);
         rlen = recvfrom(TASK_FD(task), AIT_GET_BUF(&b), AIT_LEN(&b), 0, &sa.sa, &salen);          rlen = recvfrom(TASK_FD(task), AIT_GET_BUF(&b), AIT_LEN(&b), 0, &sa.sa, &salen);
         if (sa.sa.sa_family == AF_INET) {          if (sa.sa.sa_family == AF_INET) {
                 struct ip *h;                  struct ip *h;
Line 1167  end: Line 1166  end:
 static void *  static void *
 flushBLOB(sched_task_t *task)  flushBLOB(sched_task_t *task)
 {  {
#ifndef atomic_load_acq_ptr#ifdef atomic_load_acq_ptr
         uintptr_t sigArg = atomic_load_acq_ptr(&_glSigArg);          uintptr_t sigArg = atomic_load_acq_ptr(&_glSigArg);
 #else  #else
         uintptr_t sigArg = *((volatile uintptr_t*) &_glSigArg);          uintptr_t sigArg = *((volatile uintptr_t*) &_glSigArg);
Line 1379  rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv) Line 1378  rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv)
   
         srv->srv_blob.kill = 1;          srv->srv_blob.kill = 1;
   
         schedEnd(&srv->srv_blob.root);  
   
         if (srv->srv_blob.server.cli_sa.sa.sa_family == AF_LOCAL)          if (srv->srv_blob.server.cli_sa.sa.sa_family == AF_LOCAL)
                 unlink(srv->srv_blob.server.cli_sa.sun.sun_path);                  unlink(srv->srv_blob.server.cli_sa.sun.sun_path);
   
           schedEnd(&srv->srv_blob.root);
 }  }
   
 /*  /*
Line 1413  rpc_srv_loopBLOBServer(rpc_srv_t * __restrict srv) Line 1412  rpc_srv_loopBLOBServer(rpc_srv_t * __restrict srv)
                 /* disabled kqueue support in libaitsched */                  /* disabled kqueue support in libaitsched */
                 struct sigaction sa;                  struct sigaction sa;
   
#ifndef atomic_store_rel_ptr#ifdef atomic_store_rel_ptr
                 atomic_store_rel_ptr(&_glSigArg, (uintptr_t) srv);                  atomic_store_rel_ptr(&_glSigArg, (uintptr_t) srv);
 #else  #else
                 *((volatile uintptr_t*) &_glSigArg) = (uintptr_t) srv;                  *((volatile uintptr_t*) &_glSigArg) = (uintptr_t) srv;
Line 1606  rpc_srv_endServer(rpc_srv_t ** __restrict psrv) Line 1605  rpc_srv_endServer(rpc_srv_t ** __restrict psrv)
   
         /* if send kill to blob server */          /* if send kill to blob server */
         rpc_srv_endBLOBServer(*psrv);          rpc_srv_endBLOBServer(*psrv);
           /* wait for BLOB server done */
           while (*(&(*psrv)->srv_blob.root))
                   usleep(1000);
   
         (*psrv)->srv_kill = 1;          (*psrv)->srv_kill = 1;
         sleep(RPC_SCHED_POLLING);          sleep(RPC_SCHED_POLLING);
   
         schedEnd(&(*psrv)->srv_root);  
   
         if ((*psrv)->srv_server.cli_sa.sa.sa_family == AF_LOCAL)          if ((*psrv)->srv_server.cli_sa.sa.sa_family == AF_LOCAL)
                 unlink((*psrv)->srv_server.cli_sa.sun.sun_path);                  unlink((*psrv)->srv_server.cli_sa.sun.sun_path);
   
           schedEnd(&(*psrv)->srv_root);
   
         pthread_mutex_destroy(&(*psrv)->srv_funcs.mtx);          pthread_mutex_destroy(&(*psrv)->srv_funcs.mtx);
         e_free(*psrv);          e_free(*psrv);

Removed from v.1.27.2.2  
changed lines
  Added in v.1.28.2.1


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