--- libaitrpc/src/srv.c 2011/09/03 12:39:27 1.4.2.8 +++ libaitrpc/src/srv.c 2011/09/07 00:30:04 1.4.2.11 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: srv.c,v 1.4.2.8 2011/09/03 12:39:27 misho Exp $ +* $Id: srv.c,v 1.4.2.11 2011/09/07 00:30:04 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -437,12 +437,10 @@ rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv) } else srv->srv_blob.state = kill; - /* rpc_srv_unregisterCall(srv, NULL, CALL_BLOBSHUTDOWN); rpc_srv_unregisterCall(srv, NULL, CALL_BLOBCLIENTS); rpc_srv_unregisterCall(srv, NULL, CALL_BLOBVARS); rpc_srv_unregisterCall(srv, NULL, CALL_BLOBSTATE); - */ /* close all clients connections & server socket */ for (i = 0, c = srv->srv_blob.clients; i < srv->srv_numcli && c; i++, c++) @@ -450,13 +448,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); @@ -498,9 +496,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; } @@ -530,7 +529,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; } @@ -761,9 +760,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; }