|
|
| version 1.1.1.1.2.12, 2010/06/24 15:23:38 | version 1.1.1.1.2.16, 2010/07/08 07:16:36 |
|---|---|
| Line 93 rpc_srv_dispatchCall(void *arg) | Line 93 rpc_srv_dispatchCall(void *arg) |
| ret = -6; | ret = -6; |
| } else | } else |
| if ((ret = rpc_srv_execCall(f, rpc, v)) == -1) | if ((ret = rpc_srv_execCall(f, rpc, v)) == -1) |
| ret = -6; | ret = -9; |
| else | else |
| argc = rpc_srv_getValsCall(f, &vals); | argc = rpc_srv_getValsCall(f, &vals); |
| printf("finish func %d\n", argc); | |
| makeReply: | makeReply: |
| memcpy(&rrpc.ret_session, &rpc->call_session, sizeof rrpc.ret_session); | memcpy(&rrpc.ret_session, &rpc->call_session, sizeof rrpc.ret_session); |
| rrpc.ret_tag = rpc->call_tag; | rrpc.ret_tag = rpc->call_tag; |
| Line 237 rpc_srv_dispatchVars(void *arg) | Line 238 rpc_srv_dispatchVars(void *arg) |
| ret = -6; | ret = -6; |
| break; | break; |
| } | } |
| printf("++++++ %p\n", b); | |
| if (rpc_srv_blobMap(s, b) != -1) { | if (rpc_srv_blobMap(s, b) != -1) { |
| ret = rpc_srv_sendBLOB(c, b); | ret = rpc_srv_sendBLOB(c, b); |
| Line 264 rpc_srv_dispatchVars(void *arg) | Line 266 rpc_srv_dispatchVars(void *arg) |
| blob->hdr_cmd); | blob->hdr_cmd); |
| ret = -7; | ret = -7; |
| } | } |
| cx++; | |
| makeReply: | makeReply: |
| // Replay to client! | // Replay to client! |
| Line 280 makeReply: | Line 283 makeReply: |
| ret = -9; | ret = -9; |
| break; | break; |
| } | } |
| cx = -1; | |
| } while (ret > -1); | } while (ret > -1); |
| shutdown(c->cli_sock, SHUT_RDWR); | shutdown(c->cli_sock, SHUT_RDWR); |
| Line 364 rpc_srv_initBLOBServer(rpc_srv_t * __restrict srv, u_s | Line 369 rpc_srv_initBLOBServer(rpc_srv_t * __restrict srv, u_s |
| rpc_srv_registerCall(srv, NULL, CALL_BLOBSHUTDOWN, 0); | rpc_srv_registerCall(srv, NULL, CALL_BLOBSHUTDOWN, 0); |
| rpc_srv_registerCall(srv, NULL, CALL_BLOBCLIENTS, 0); | rpc_srv_registerCall(srv, NULL, CALL_BLOBCLIENTS, 0); |
| rpc_srv_registerCall(srv, NULL, CALL_BLOBVARS, 0); | rpc_srv_registerCall(srv, NULL, CALL_BLOBVARS, 0); |
| rpc_srv_registerCall(srv, NULL, CALL_BLOBSTATE, 1); | |
| pthread_mutex_unlock(&srv->srv_mtx); | pthread_mutex_unlock(&srv->srv_mtx); |
| srv->srv_blob.state = enable; // enable BLOB | srv->srv_blob.state = enable; // enable BLOB |
| Line 391 rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv) | Line 397 rpc_srv_endBLOBServer(rpc_srv_t * __restrict srv) |
| 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); | |
| 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++) |
| if (c->cli_sa.sa_family) | if (c->cli_sa.sa_family) |
| 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); |
| 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; | |
| } | |
| pthread_mutex_lock(&srv->srv_blob.mtx); | 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); | |
| free(f); | free(f); |
| } | } |
| pthread_mutex_unlock(&srv->srv_blob.mtx); | pthread_mutex_unlock(&srv->srv_blob.mtx); |
| Line 439 rpc_srv_execBLOBServer(rpc_srv_t * __restrict srv) | Line 449 rpc_srv_execBLOBServer(rpc_srv_t * __restrict srv) |
| for (c = srv->srv_blob.clients, i = 0; i < srv->srv_numcli && c; i++, c++) | for (c = srv->srv_blob.clients, i = 0; i < srv->srv_numcli && c; i++, c++) |
| if (!c->cli_sa.sa_family) | if (!c->cli_sa.sa_family) |
| break; | break; |
| if (c && c->cli_sa.sa_family && c->cli_parent) { | if (i >= srv->srv_numcli) { |
| usleep(1000000); | usleep(1000000); |
| continue; | continue; |
| } | } |
| Line 610 rpc_srv_endServer(rpc_srv_t * __restrict srv) | Line 620 rpc_srv_endServer(rpc_srv_t * __restrict srv) |
| if (srv->srv_clients) { | if (srv->srv_clients) { |
| free(srv->srv_clients); | free(srv->srv_clients); |
| srv->srv_clients = NULL; | |
| srv->srv_numcli = 0; | srv->srv_numcli = 0; |
| } | } |
| Line 655 rpc_srv_execServer(rpc_srv_t * __restrict srv) | Line 666 rpc_srv_execServer(rpc_srv_t * __restrict srv) |
| for (c = srv->srv_clients, i = 0; i < srv->srv_numcli && c; i++, c++) | for (c = srv->srv_clients, i = 0; i < srv->srv_numcli && c; i++, c++) |
| if (!c->cli_sa.sa_family) | if (!c->cli_sa.sa_family) |
| break; | break; |
| if (c && c->cli_sa.sa_family && c->cli_parent) { | if (i >= srv->srv_numcli) { |
| usleep(1000000); | usleep(1000000); |
| continue; | continue; |
| } | } |