--- libaitrpc/src/lists.c 2012/03/15 01:55:33 1.7 +++ libaitrpc/src/lists.c 2012/03/28 13:37:13 1.7.2.1 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: lists.c,v 1.7 2012/03/15 01:55:33 misho Exp $ +* $Id: lists.c,v 1.7.2.1 2012/03/28 13:37:13 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -166,13 +166,15 @@ rpc_srv_unregisterCall(rpc_srv_t * __restrict srv, con if (rpc_calcHashes(&func, csModule, csFunc) == -1) return -1; + pthread_mutex_lock(&srv->srv_mtx); f = rpc_srv_getCall(srv, func.func_tag, func.func_hash); AIT_FREE_VAL(&func.func_name); AIT_FREE_VAL(&func.func_file); - if (!f) /* not found element for unregister */ + if (!f) { /* not found element for unregister */ + pthread_mutex_unlock(&srv->srv_mtx); return 0; + } - pthread_mutex_lock(&srv->srv_mtx); /* remove from list of functions */ if (srv->srv_funcs == f) /* if is 1st element */ srv->srv_funcs = srv->srv_funcs->func_next;