void mwSession_free(struct mwSession *s) { struct mwSessionHandler *h; g_return_if_fail(s != NULL); if(! mwSession_isStopped(s)) { g_debug("session is not stopped (state: %s), proceeding with free", state_str(s->state)); } h = s->handler; if(h && h->clear) h->clear(s); s->handler = NULL; session_buf_free(s); mwChannelSet_free(s->channels); g_hash_table_destroy(s->services); g_hash_table_destroy(s->ciphers); g_hash_table_destroy(s->attributes); mwLoginInfo_clear(&s->login); mwUserStatus_clear(&s->status); mwPrivacyInfo_clear(&s->privacy); g_free(s); }
static void LOGIN_ACK_clear(struct mwMsgLoginAck *msg) { mwLoginInfo_clear(&msg->login); mwPrivacyInfo_clear(&msg->privacy); mwUserStatus_clear(&msg->status); }