|
version 1.4.2.7, 2011/09/01 14:55:42
|
version 1.5.2.1, 2011/09/07 08:56:32
|
|
Line 103 rpc_srv_dispatchCall(void *arg)
|
Line 103 rpc_srv_dispatchCall(void *arg)
|
| } else |
} else |
| rpc = (struct tagRPCCall*) buf; |
rpc = (struct tagRPCCall*) buf; |
| /* check RPC packet session info */ |
/* check RPC packet session info */ |
| if (memcmp(&rpc->call_session, &s->srv_session, sizeof rpc->call_session)) { | if (rpc_chkPktSession(&rpc->call_session, &s->srv_session)) { |
| rpc_SetErr(ERPCMISMATCH, "Error:: get invalid RPC session ...\n"); |
rpc_SetErr(ERPCMISMATCH, "Error:: get invalid RPC session ...\n"); |
| ret = -5; |
ret = -5; |
| goto makeReply; |
goto makeReply; |
|
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 310 makeReply:
|
Line 311 makeReply:
|
| shutdown(c->cli_sock, SHUT_RDWR); |
shutdown(c->cli_sock, SHUT_RDWR); |
| close(c->cli_sock); |
close(c->cli_sock); |
| memset(c, 0, sizeof(rpc_cli_t)); |
memset(c, 0, sizeof(rpc_cli_t)); |
| return (void*) (long)ret; | return (void*) ((long)ret); |
| } |
} |
| |
|
| // ------------------------------------------------- |
// ------------------------------------------------- |
|
Line 448 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 467 rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv)
|
Line 468 rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv)
|
| } |
} |
| |
|
| /* |
/* |
| * rpc_srv_execBLOBServer() Execute Main BLOB server loop and wait for clients requests | * rpc_srv_loopBLOB() Execute Main BLOB server loop and wait for clients requests |
| * @srv = RPC Server instance |
* @srv = RPC Server instance |
| * return: -1 error or 0 ok, infinite loop ... |
* return: -1 error or 0 ok, infinite loop ... |
| */ |
*/ |
| int |
int |
| rpc_srv_execBLOBServer(rpc_srv_t * __restrict srv) | rpc_srv_loopBLOB(rpc_srv_t * __restrict srv) |
| { |
{ |
| socklen_t salen = sizeof(struct sockaddr); |
socklen_t salen = sizeof(struct sockaddr); |
| register int i; |
register int i; |
|
Line 496 rpc_srv_execBLOBServer(rpc_srv_t * __restrict srv)
|
Line 497 rpc_srv_execBLOBServer(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 528 rpc_srv_execBLOBServer(rpc_srv_t * __restrict srv)
|
Line 530 rpc_srv_execBLOBServer(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 727 rpc_srv_endServer(rpc_srv_t * __restrict srv)
|
Line 729 rpc_srv_endServer(rpc_srv_t * __restrict srv)
|
| } |
} |
| |
|
| /* |
/* |
| * rpc_srv_execServer() Execute Main server loop and wait for clients requests | * rpc_srv_loopServer() Execute Main server loop and wait for clients requests |
| * @srv = RPC Server instance |
* @srv = RPC Server instance |
| * return: -1 error or 0 ok, infinite loop ... |
* return: -1 error or 0 ok, infinite loop ... |
| */ |
*/ |
| int |
int |
| rpc_srv_execServer(rpc_srv_t * __restrict srv) | rpc_srv_loopServer(rpc_srv_t * __restrict srv) |
| { |
{ |
| socklen_t salen = sizeof(struct sockaddr); |
socklen_t salen = sizeof(struct sockaddr); |
| register int i; |
register int i; |
|
Line 746 rpc_srv_execServer(rpc_srv_t * __restrict srv)
|
Line 748 rpc_srv_execServer(rpc_srv_t * __restrict srv)
|
| return -1; |
return -1; |
| } |
} |
| |
|
| |
/* activate BLOB server worker if srv->srv_blob.state == enable */ |
| |
rpc_srv_execBLOBServer(srv); |
| |
|
| if (listen(srv->srv_server.cli_sock, SOMAXCONN) == -1) { |
if (listen(srv->srv_server.cli_sock, SOMAXCONN) == -1) { |
| LOGERR; |
LOGERR; |
| return -1; |
return -1; |
|
Line 756 rpc_srv_execServer(rpc_srv_t * __restrict srv)
|
Line 761 rpc_srv_execServer(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; |
| } |
} |