--- libaitrpc/src/srv.c 2011/09/03 12:58:49 1.4.2.9 +++ libaitrpc/src/srv.c 2011/09/07 07:24:21 1.5 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: srv.c,v 1.4.2.9 2011/09/03 12:58:49 misho Exp $ +* $Id: srv.c,v 1.5 2011/09/07 07:24:21 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -117,7 +117,8 @@ rpc_srv_dispatchCall(void *arg) ret = -5; goto makeReply; } - } + } else + arr = NULL; /* execute call */ argc = 0; @@ -448,13 +449,13 @@ rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv) shutdown(c->cli_sock, SHUT_RDWR); close(srv->srv_blob.server.cli_sock); + pthread_mutex_lock(&srv->srv_blob.mtx); if (srv->srv_blob.clients) { free(srv->srv_blob.clients); srv->srv_blob.clients = NULL; } /* detach blobs */ - pthread_mutex_lock(&srv->srv_blob.mtx); while ((f = srv->srv_blob.blobs)) { srv->srv_blob.blobs = f->blob_next; rpc_srv_blobFree(srv, f); @@ -496,9 +497,10 @@ rpc_srv_loopBLOB(rpc_srv_t * __restrict srv) if (!c->cli_sa.sa_family) break; if (i >= srv->srv_numcli) { - usleep(1000000); #ifdef HAVE_PTHREAD_YIELD pthread_yield(); +#else + usleep(1000000); #endif continue; } @@ -528,7 +530,7 @@ rpc_srv_loopBLOB(rpc_srv_t * __restrict srv) pthread_detach(c->cli_tid); } - srv->srv_blob.state = disable; + srv->srv_blob.state = kill; return 0; } @@ -759,9 +761,10 @@ rpc_srv_loopServer(rpc_srv_t * __restrict srv) if (!c->cli_sa.sa_family) break; if (i >= srv->srv_numcli) { - usleep(1000000); #ifdef HAVE_PTHREAD_YIELD pthread_yield(); +#else + usleep(1000000); #endif continue; }