void RpcChannel_Shutdown(RpcChannel *chan) { if (chan != NULL) { g_static_mutex_free(&chan->outLock); } if (chan != NULL && chan->funcs != NULL && chan->funcs->shutdown != NULL) { if (chan->in != NULL) { if (chan->inStarted) { RpcIn_stop(chan->in); } chan->inStarted = FALSE; RpcIn_Destruct(chan->in); chan->in = NULL; } else { ASSERT(!chan->inStarted); } if (chan->mainCtx != NULL) { g_main_context_unref(chan->mainCtx); } chan->funcs->shutdown(chan); } }
static void RpcInShutdown(RpcChannel *chan) { BackdoorChannel *bdoor = chan->_private; RpcInStop(chan); if (bdoor->in != NULL) { RpcIn_Destruct(bdoor->in); } RpcOut_Destruct(bdoor->out); g_static_mutex_free(&bdoor->outLock); if (bdoor->mainCtx != NULL) { g_main_context_unref(bdoor->mainCtx); } g_free(bdoor); }