--- libaitrpc/src/srv.c 2010/07/08 07:32:53 1.1.1.1.2.18 +++ libaitrpc/src/srv.c 2010/07/08 13:05:50 1.1.1.1.2.21 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: srv.c,v 1.1.1.1.2.18 2010/07/08 07:32:53 misho Exp $ +* $Id: srv.c,v 1.1.1.1.2.21 2010/07/08 13:05:50 misho Exp $ * *************************************************************************/ #include "global.h" @@ -234,7 +234,8 @@ rpc_srv_dispatchVars(void *arg) blob->hdr_var); ret = -6; break; - } + } else + blob->hdr_len = b->blob_len; if (rpc_srv_blobMap(s, b) != -1) { ret = rpc_srv_sendBLOB(c, b); @@ -410,6 +411,7 @@ rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv) } pthread_mutex_unlock(&srv->srv_blob.mtx); + while (pthread_mutex_trylock(&srv->srv_blob.mtx) == EBUSY); pthread_mutex_destroy(&srv->srv_blob.mtx); } @@ -578,12 +580,12 @@ rpc_srv_initServer(u_int regProgID, u_int regProcID, i } else memset(srv->srv_clients, 0, srv->srv_numcli * sizeof(rpc_cli_t)); + pthread_mutex_init(&srv->srv_mtx, NULL); + rpc_srv_registerCall(srv, NULL, CALL_SRVSHUTDOWN, 0); rpc_srv_registerCall(srv, NULL, CALL_SRVCLIENTS, 0); rpc_srv_registerCall(srv, NULL, CALL_SRVCALLS, 0); rpc_srv_registerCall(srv, NULL, CALL_SRVSESSIONS, 0); - - pthread_mutex_init(&srv->srv_mtx, NULL); return srv; } @@ -624,6 +626,7 @@ rpc_srv_endServer(rpc_srv_t * __restrict srv) } pthread_mutex_unlock(&srv->srv_mtx); + while (pthread_mutex_trylock(&srv->srv_mtx) == EBUSY); pthread_mutex_destroy(&srv->srv_mtx); free(srv);