--- libaitrpc/src/srv.c 2010/06/24 15:23:38 1.1.1.1.2.12 +++ libaitrpc/src/srv.c 2010/06/28 15:18:43 1.1.1.1.2.13 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: srv.c,v 1.1.1.1.2.12 2010/06/24 15:23:38 misho Exp $ +* $Id: srv.c,v 1.1.1.1.2.13 2010/06/28 15:18:43 misho Exp $ * *************************************************************************/ #include "global.h" @@ -364,6 +364,7 @@ rpc_srv_initBLOBServer(rpc_srv_t * __restrict srv, u_s rpc_srv_registerCall(srv, NULL, CALL_BLOBSHUTDOWN, 0); rpc_srv_registerCall(srv, NULL, CALL_BLOBCLIENTS, 0); rpc_srv_registerCall(srv, NULL, CALL_BLOBVARS, 0); + rpc_srv_registerCall(srv, NULL, CALL_BLOBSTATE, 1); pthread_mutex_unlock(&srv->srv_mtx); srv->srv_blob.state = enable; // enable BLOB @@ -391,14 +392,17 @@ rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv) 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); for (i = 0, c = srv->srv_blob.clients; i < srv->srv_numcli && c; i++, c++) if (c->cli_sa.sa_family) shutdown(c->cli_sock, SHUT_RDWR); close(srv->srv_blob.server.cli_sock); - if (srv->srv_blob.clients) + if (srv->srv_blob.clients) { free(srv->srv_blob.clients); + srv->srv_blob.clients = NULL; + } pthread_mutex_lock(&srv->srv_blob.mtx); while ((f = srv->srv_blob.blobs)) { @@ -439,7 +443,7 @@ rpc_srv_execBLOBServer(rpc_srv_t * __restrict srv) for (c = srv->srv_blob.clients, i = 0; i < srv->srv_numcli && c; i++, c++) if (!c->cli_sa.sa_family) break; - if (c && c->cli_sa.sa_family && c->cli_parent) { + if (i >= srv->srv_numcli) { usleep(1000000); continue; } @@ -610,6 +614,7 @@ rpc_srv_endServer(rpc_srv_t * __restrict srv) if (srv->srv_clients) { free(srv->srv_clients); + srv->srv_clients = NULL; srv->srv_numcli = 0; } @@ -655,7 +660,7 @@ rpc_srv_execServer(rpc_srv_t * __restrict srv) for (c = srv->srv_clients, i = 0; i < srv->srv_numcli && c; i++, c++) if (!c->cli_sa.sa_family) break; - if (c && c->cli_sa.sa_family && c->cli_parent) { + if (i >= srv->srv_numcli) { usleep(1000000); continue; }