Diff for /libaitrpc/src/srv.c between versions 1.9 and 1.9.2.3

version 1.9, 2012/05/14 08:39:06 version 1.9.2.3, 2012/05/14 15:35:58
Line 651  rpc_srv_loopBLOB(rpc_srv_t * __restrict srv) Line 651  rpc_srv_loopBLOB(rpc_srv_t * __restrict srv)
                 if (i >= srv->srv_numcli) {                  if (i >= srv->srv_numcli) {
 #ifdef HAVE_PTHREAD_YIELD  #ifdef HAVE_PTHREAD_YIELD
                         pthread_yield();                          pthread_yield();
 #else  
                         usleep(1000000);  
 #endif  #endif
                           usleep(1000000);
                         continue;                          continue;
                 }                  }
   
Line 705  rpc_srv_initServer(u_int regProgID, u_int regProcID, i Line 704  rpc_srv_initServer(u_int regProgID, u_int regProcID, i
 {  {
         rpc_srv_t *srv = NULL;          rpc_srv_t *srv = NULL;
         int n = 1;          int n = 1;
         struct hostent *host = NULL;  
         io_sockaddr_t sa;          io_sockaddr_t sa;
   
        if (!concurentClients || !regProgID ||         if (!concurentClients || !regProgID) {
                        (family != AF_INET && family != AF_INET6 && family != AF_LOCAL)) {                rpc_SetErr(EINVAL, "Invalid parameters can`t init RPC server");
                rpc_SetErr(EINVAL, "Error:: Invalid parameters can`t init RPC server ...\n"); 
                 return NULL;                  return NULL;
         }          }
           if (!io_gethostbyname(csHost, Port, &sa))
                   return NULL;
         if (!Port)          if (!Port)
                 Port = RPC_DEFPORT;                  Port = RPC_DEFPORT;
         if (!netBuf)          if (!netBuf)
                 netBuf = BUFSIZ;                  netBuf = BUFSIZ;
         else          else
                 netBuf = io_align(netBuf, 1);   /* align netBuf length */                  netBuf = io_align(netBuf, 1);   /* align netBuf length */
         if (csHost && family != AF_LOCAL) {  
                 host = gethostbyname2(csHost, family);  
                 if (!host) {  
                         rpc_SetErr(h_errno, "Error:: %s\n", hstrerror(h_errno));  
                         return NULL;  
                 }  
         }  
         memset(&sa, 0, sizeof sa);  
         sa.sa.sa_family = family;  
         switch (family) {  
                 case AF_INET:  
                         sa.sin.sin_len = sizeof(struct sockaddr_in);  
                         sa.sin.sin_port = htons(Port);  
                         if (csHost)  
                                 memcpy(&sa.sin.sin_addr, host->h_addr, host->h_length);  
                         break;  
                 case AF_INET6:  
                         sa.sin6.sin6_len = sizeof(struct sockaddr_in6);  
                         sa.sin6.sin6_port = htons(Port);  
                         if (csHost)  
                                 memcpy(&sa.sin6.sin6_addr, host->h_addr, host->h_length);  
                         break;  
                 case AF_LOCAL:  
                         sa.sun.sun_len = sizeof(struct sockaddr_un);  
                         if (csHost)  
                                 strlcpy(sa.sun.sun_path, csHost, sizeof sa.sun.sun_path);  
                         unlink(sa.sun.sun_path);  
                         break;  
                 default:  
                         rpc_SetErr(EINVAL, "Error:: Invalid parameters can`t start RPC server ...\n");  
                         return NULL;  
         }  
   
         srv = malloc(sizeof(rpc_srv_t));          srv = malloc(sizeof(rpc_srv_t));
         if (!srv) {          if (!srv) {
Line 771  rpc_srv_initServer(u_int regProgID, u_int regProcID, i Line 738  rpc_srv_initServer(u_int regProgID, u_int regProcID, i
         memcpy(&srv->srv_server.cli_sa, &sa, sizeof sa);          memcpy(&srv->srv_server.cli_sa, &sa, sizeof sa);
   
         /* create server socket */          /* create server socket */
        srv->srv_server.cli_sock = socket(family, SOCK_STREAM, 0);        srv->srv_server.cli_sock = socket(srv->srv_server.cli_sa.sa.sa_family, SOCK_STREAM, 0);
         if (srv->srv_server.cli_sock == -1) {          if (srv->srv_server.cli_sock == -1) {
                 LOGERR;                  LOGERR;
                 free(srv);                  free(srv);
Line 836  rpc_srv_endServer(rpc_srv_t ** __restrict psrv) Line 803  rpc_srv_endServer(rpc_srv_t ** __restrict psrv)
         rpc_func_t *f;          rpc_func_t *f;
   
         if (!psrv || !*psrv) {          if (!psrv || !*psrv) {
                rpc_SetErr(EINVAL, "Error:: Can`t destroy server because parameter is null!\n");                rpc_SetErr(EINVAL, "Can`t destroy server because parameter is null!");
                 return;                  return;
         }          }
   
Line 886  rpc_srv_loopServer(rpc_srv_t * __restrict srv) Line 853  rpc_srv_loopServer(rpc_srv_t * __restrict srv)
         struct pollfd pfd;          struct pollfd pfd;
   
         if (!srv) {          if (!srv) {
                rpc_SetErr(EINVAL, "Error:: Invalid parameter can`t start RPC server ...\n");                rpc_SetErr(EINVAL, "Invalid parameter can`t start RPC server");
                 return -1;                  return -1;
         }          }
   
         /* activate BLOB server worker if srv->srv_blob.state == enable */          /* activate BLOB server worker if srv->srv_blob.state == enable */
         rpc_srv_execBLOBServer(srv);          rpc_srv_execBLOBServer(srv);
   
        if (listen(srv->srv_server.cli_sock, SOMAXCONN) == -1) {        if (listen(srv->srv_server.cli_sock, srv->srv_numcli) == -1) {
                 LOGERR;                  LOGERR;
                 return -1;                  return -1;
         } else          } else
Line 912  rpc_srv_loopServer(rpc_srv_t * __restrict srv) Line 879  rpc_srv_loopServer(rpc_srv_t * __restrict srv)
                 if (i >= srv->srv_numcli) {                  if (i >= srv->srv_numcli) {
 #ifdef HAVE_PTHREAD_YIELD  #ifdef HAVE_PTHREAD_YIELD
                         pthread_yield();                          pthread_yield();
 #else  
                         usleep(1000000);  
 #endif  #endif
                           usleep(1000000);
                         continue;                          continue;
                 }                  }
   

Removed from v.1.9  
changed lines
  Added in v.1.9.2.3


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