--- libaitrpc/src/lists.c 2010/07/07 15:18:22 1.1.2.6 +++ libaitrpc/src/lists.c 2011/03/15 16:48:31 1.1.2.9 @@ -50,8 +50,8 @@ rpc_srv_declValsCall(rpc_func_t * __restrict call, int if (!call || return_vals < 0) { rpc_SetErr(EINVAL, "Error:: Invalid parameter can`t declare return variables for RPC call...\n"); return -1; - } /* else - call->func_args = return_vals; */ + } else + call->func_args = return_vals; if (!return_vals) { if (call->func_vals) { @@ -62,6 +62,7 @@ rpc_srv_declValsCall(rpc_func_t * __restrict call, int ptr = realloc(call->func_vals, return_vals * sizeof(rpc_val_t)); if (!ptr) { LOGERR; + call->func_args = 0; return -1; } else call->func_vals = ptr; @@ -170,7 +171,7 @@ rpc_srv_registerCall(rpc_srv_t * __restrict srv, const func->func_parent = srv; - if (rpc_srv_declValsCall(func, args) == -1) { + if (args > 0 && rpc_srv_declValsCall(func, args) == -1) { free(func); return -1; } @@ -311,10 +312,12 @@ rpc_srv_getBLOB(rpc_srv_t * __restrict srv, uint32_t v return NULL; } + pthread_mutex_lock(&srv->srv_blob.mtx); for (b = srv->srv_blob.blobs; b; b = b->blob_next) { if (b->blob_var == var) break; } + pthread_mutex_unlock(&srv->srv_blob.mtx); return b; }