static void infd_xmpp_server_dispose(GObject* object) { InfdXmppServer* xmpp; InfdXmppServerPrivate* priv; xmpp = INFD_XMPP_SERVER(object); priv = INFD_XMPP_SERVER_PRIVATE(xmpp); if(priv->status != INFD_XMPP_SERVER_CLOSED) infd_xml_server_close(INFD_XML_SERVER(xmpp)); infd_xmpp_server_set_tcp(xmpp, NULL); if(priv->sasl_own_context != NULL) { inf_sasl_context_unref(priv->sasl_own_context); priv->sasl_own_context = NULL; } if(priv->sasl_context != NULL) { inf_sasl_context_unref(priv->sasl_context); priv->sasl_context = NULL; } if(priv->tls_creds != NULL) { inf_certificate_credentials_unref(priv->tls_creds); priv->tls_creds = NULL; } G_OBJECT_CLASS(parent_class)->dispose(object); }
void Gobby::Server::close() { g_assert(is_open()); if(m_xmpp6 != NULL) { // Will be removed from server pool automatically infd_xml_server_close(INFD_XML_SERVER(m_xmpp6)); g_object_unref(m_xmpp6); m_xmpp6 = NULL; } if(m_xmpp4 != NULL) { // Will be removed from server pool automatically infd_xml_server_close(INFD_XML_SERVER(m_xmpp4)); g_object_unref(m_xmpp4); m_xmpp4 = NULL; } }