version 1.8.2.2, 2012/05/11 08:46:41
|
version 1.8.2.4, 2012/05/11 09:11:01
|
Line 579 rpc_srv_initBLOBServer(rpc_srv_t * __restrict srv, u_s
|
Line 579 rpc_srv_initBLOBServer(rpc_srv_t * __restrict srv, u_s
|
} else |
} else |
memset(srv->srv_blob.clients, 0, srv->srv_numcli * sizeof(rpc_cli_t)); |
memset(srv->srv_blob.clients, 0, srv->srv_numcli * sizeof(rpc_cli_t)); |
|
|
pthread_mutex_init(&srv->srv_blob.mtx, NULL); |
|
|
|
rpc_srv_registerCall(srv, NULL, CALL_BLOBSHUTDOWN, 0); |
rpc_srv_registerCall(srv, NULL, CALL_BLOBSHUTDOWN, 0); |
rpc_srv_registerCall(srv, NULL, CALL_BLOBCLIENTS, 1); |
rpc_srv_registerCall(srv, NULL, CALL_BLOBCLIENTS, 1); |
rpc_srv_registerCall(srv, NULL, CALL_BLOBVARS, 1); |
rpc_srv_registerCall(srv, NULL, CALL_BLOBVARS, 1); |
Line 621 rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv)
|
Line 619 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; |
Line 633 rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv)
|
Line 630 rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv)
|
rpc_srv_blobFree(srv, f); |
rpc_srv_blobFree(srv, f); |
free(f); |
free(f); |
} |
} |
pthread_mutex_unlock(&srv->srv_blob.mtx); |
|
|
|
AIT_FREE_VAL(&srv->srv_blob.dir); |
AIT_FREE_VAL(&srv->srv_blob.dir); |
|
|
while (pthread_mutex_trylock(&srv->srv_blob.mtx) == EBUSY); |
|
pthread_mutex_destroy(&srv->srv_blob.mtx); |
|
|
|
/* at final, save disable BLOB service state */ |
/* at final, save disable BLOB service state */ |
srv->srv_blob.state = disable; |
srv->srv_blob.state = disable; |
} |
} |
Line 671 rpc_srv_loopBLOB(rpc_srv_t * __restrict srv)
|
Line 664 rpc_srv_loopBLOB(rpc_srv_t * __restrict srv)
|
LOGERR; |
LOGERR; |
return -1; |
return -1; |
} else |
} else |
fcntl(srv->srv_server.cli_sock, F_SETFL, fcntl(srv->srv_server.cli_sock, F_GETFL) | O_NONBLOCK); | fcntl(srv->srv_blob.server.cli_sock, F_SETFL, |
| fcntl(srv->srv_blob.server.cli_sock, F_GETFL) | O_NONBLOCK); |
|
|
pthread_attr_init(&attr); |
pthread_attr_init(&attr); |
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); |
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); |
|
|
pfd.fd = srv->srv_server.cli_sock; | pfd.fd = srv->srv_blob.server.cli_sock; |
pfd.events = POLLIN | POLLPRI; |
pfd.events = POLLIN | POLLPRI; |
/* main BLOB loop */ |
/* main BLOB loop */ |
while (srv->srv_blob.state != kill && srv->srv_kill != kill) { |
while (srv->srv_blob.state != kill && srv->srv_kill != kill) { |