void CSametimeProto::DeinitMeanwhileServices() { debugLog(_T("DeinitMeanwhileServices() start")); DeinitConference(); DeinitFiles(); DeinitMessaging(); DeinitUserList(); mwCipher_free(mwSession_getCipher(session, mwCipher_RC2_40)); mwCipher_free(mwSession_getCipher(session, mwCipher_RC2_128)); }
void mwChannel_recvCreate(struct mwChannel *chan, struct mwMsgChannelCreate *msg) { struct mwSession *session; GList *list; struct mwService *srvc; g_return_if_fail(chan != NULL); g_return_if_fail(msg != NULL); g_return_if_fail(chan->id == msg->channel); session = chan->session; g_return_if_fail(session != NULL); if(mwChannel_isOutgoing(chan)) { g_warning("channel 0x%08x not an incoming channel", chan->id); mwChannel_destroy(chan, ERR_REQUEST_INVALID, NULL); return; } chan->offered_policy = msg->encrypt.mode; g_message("channel offered with encrypt policy 0x%04x", chan->policy); for(list = msg->encrypt.items; list; list = list->next) { struct mwEncryptItem *ei = list->data; struct mwCipher *cipher; struct mwCipherInstance *ci; g_message("channel offered cipher id 0x%04x", ei->id); cipher = mwSession_getCipher(session, ei->id); if(! cipher) { g_message("no such cipher found in session"); continue; } ci = mwCipher_newInstance(cipher, chan); mwCipherInstance_offered(ci, ei); mwChannel_addSupportedCipherInstance(chan, ci); } mwLoginInfo_clone(&chan->user, &msg->creator); chan->service = msg->service; chan->proto_type = msg->proto_type; chan->proto_ver = msg->proto_ver; srvc = mwSession_getService(session, msg->service); if(srvc) { mwService_recvCreate(srvc, chan, msg); } else { mwChannel_destroy(chan, ERR_SERVICE_NO_SUPPORT, NULL); } }
MeanwhileSession::~MeanwhileSession() { HERE; if (isConnected() || isConnecting()) disconnect(); mwSession_removeService(session, mwService_STORAGE); mwSession_removeService(session, mwService_RESOLVE); mwSession_removeService(session, mwService_IM); mwSession_removeService(session, mwService_AWARE); mwAwareList_free(awareList); mwService_free(MW_SERVICE(storageService)); mwService_free(MW_SERVICE(resolveService)); mwService_free(MW_SERVICE(imService)); mwService_free(MW_SERVICE(awareService)); mwCipher_free(mwSession_getCipher(session, mwCipher_RC2_40)); mwCipher_free(mwSession_getCipher(session, mwCipher_RC2_128)); mwSession_free(session); }