version 1.4.2.8, 2011/09/03 12:39:27
|
version 1.5, 2011/09/07 07:24:21
|
Line 117 rpc_srv_dispatchCall(void *arg)
|
Line 117 rpc_srv_dispatchCall(void *arg)
|
ret = -5; |
ret = -5; |
goto makeReply; |
goto makeReply; |
} |
} |
} | } else |
| arr = NULL; |
|
|
/* execute call */ |
/* execute call */ |
argc = 0; |
argc = 0; |
Line 437 rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv)
|
Line 438 rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv)
|
} else |
} else |
srv->srv_blob.state = kill; |
srv->srv_blob.state = kill; |
|
|
/* |
|
rpc_srv_unregisterCall(srv, NULL, CALL_BLOBSHUTDOWN); |
rpc_srv_unregisterCall(srv, NULL, CALL_BLOBSHUTDOWN); |
rpc_srv_unregisterCall(srv, NULL, CALL_BLOBCLIENTS); |
rpc_srv_unregisterCall(srv, NULL, CALL_BLOBCLIENTS); |
rpc_srv_unregisterCall(srv, NULL, CALL_BLOBVARS); |
rpc_srv_unregisterCall(srv, NULL, CALL_BLOBVARS); |
rpc_srv_unregisterCall(srv, NULL, CALL_BLOBSTATE); |
rpc_srv_unregisterCall(srv, NULL, CALL_BLOBSTATE); |
*/ |
|
|
|
/* close all clients connections & server socket */ |
/* close all clients connections & server socket */ |
for (i = 0, c = srv->srv_blob.clients; i < srv->srv_numcli && c; i++, c++) |
for (i = 0, c = srv->srv_blob.clients; i < srv->srv_numcli && c; i++, c++) |
Line 450 rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv)
|
Line 449 rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv)
|
shutdown(c->cli_sock, SHUT_RDWR); |
shutdown(c->cli_sock, SHUT_RDWR); |
close(srv->srv_blob.server.cli_sock); |
close(srv->srv_blob.server.cli_sock); |
|
|
|
pthread_mutex_lock(&srv->srv_blob.mtx); |
if (srv->srv_blob.clients) { |
if (srv->srv_blob.clients) { |
free(srv->srv_blob.clients); |
free(srv->srv_blob.clients); |
srv->srv_blob.clients = NULL; |
srv->srv_blob.clients = NULL; |
} |
} |
|
|
/* detach blobs */ |
/* detach blobs */ |
pthread_mutex_lock(&srv->srv_blob.mtx); |
|
while ((f = srv->srv_blob.blobs)) { |
while ((f = srv->srv_blob.blobs)) { |
srv->srv_blob.blobs = f->blob_next; |
srv->srv_blob.blobs = f->blob_next; |
rpc_srv_blobFree(srv, f); |
rpc_srv_blobFree(srv, f); |
Line 498 rpc_srv_loopBLOB(rpc_srv_t * __restrict srv)
|
Line 497 rpc_srv_loopBLOB(rpc_srv_t * __restrict srv)
|
if (!c->cli_sa.sa_family) |
if (!c->cli_sa.sa_family) |
break; |
break; |
if (i >= srv->srv_numcli) { |
if (i >= srv->srv_numcli) { |
usleep(1000000); |
|
#ifdef HAVE_PTHREAD_YIELD |
#ifdef HAVE_PTHREAD_YIELD |
pthread_yield(); |
pthread_yield(); |
|
#else |
|
usleep(1000000); |
#endif |
#endif |
continue; |
continue; |
} |
} |
Line 530 rpc_srv_loopBLOB(rpc_srv_t * __restrict srv)
|
Line 530 rpc_srv_loopBLOB(rpc_srv_t * __restrict srv)
|
pthread_detach(c->cli_tid); |
pthread_detach(c->cli_tid); |
} |
} |
|
|
srv->srv_blob.state = disable; | srv->srv_blob.state = kill; |
|
|
return 0; |
return 0; |
} |
} |
Line 761 rpc_srv_loopServer(rpc_srv_t * __restrict srv)
|
Line 761 rpc_srv_loopServer(rpc_srv_t * __restrict srv)
|
if (!c->cli_sa.sa_family) |
if (!c->cli_sa.sa_family) |
break; |
break; |
if (i >= srv->srv_numcli) { |
if (i >= srv->srv_numcli) { |
usleep(1000000); |
|
#ifdef HAVE_PTHREAD_YIELD |
#ifdef HAVE_PTHREAD_YIELD |
pthread_yield(); |
pthread_yield(); |
|
#else |
|
usleep(1000000); |
#endif |
#endif |
continue; |
continue; |
} |
} |