--- libaitrpc/src/lists.c 2011/09/01 11:39:26 1.4.2.3 +++ libaitrpc/src/lists.c 2011/09/01 14:28:41 1.4.2.4 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: lists.c,v 1.4.2.3 2011/09/01 11:39:26 misho Exp $ +* $Id: lists.c,v 1.4.2.4 2011/09/01 14:28:41 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -221,6 +221,7 @@ rpc_srv_registerCall(rpc_srv_t * __restrict srv, const func->func_next = srv->srv_funcs; srv->srv_funcs = func; pthread_mutex_unlock(&srv->srv_mtx); + printf("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<func_name, func); return 0; } @@ -254,24 +255,25 @@ rpc_srv_unregisterCall(rpc_srv_t * __restrict srv, con func.func_tag = crcFletcher16((u_short*) str, sizeof str / 2); func.func_hash = hash_fnv((char*) str, sizeof str); + pthread_mutex_lock(&srv->srv_mtx); f = rpc_srv_getCall(srv, func.func_tag, func.func_hash); if (!f) /* not found element for unregister */ return 0; - pthread_mutex_lock(&srv->srv_mtx); + printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>func(%s)=%p\n", f->func_name, f); if (srv->srv_funcs == f) { /* if is 1st element */ srv->srv_funcs = srv->srv_funcs->func_next; - if (f->func_vars) - rpc_srv_destroyVars(f); + rpc_srv_destroyVars(f); free(f); + f = NULL; } else { for (curr = srv->srv_funcs; curr->func_next != f; curr = curr->func_next); curr->func_next = curr->func_next->func_next; - if (f->func_vars) - rpc_srv_destroyVars(f); + rpc_srv_destroyVars(f); free(f); + f = NULL; } pthread_mutex_unlock(&srv->srv_mtx);