void axis2_xmpp_client_setup_filter( axis2_xmpp_session_data_t* session) { session->filter = iks_filter_new(); /* Handler for 'iq' stanzas */ iks_filter_add_rule(session->filter, axis2_xmpp_client_on_iq, session, IKS_RULE_TYPE, IKS_PAK_IQ, IKS_RULE_DONE); /* Handler for 'message' stanzas */ iks_filter_add_rule(session->filter, axis2_xmpp_client_on_message, session, IKS_RULE_TYPE, IKS_PAK_MESSAGE, IKS_RULE_DONE); }
static void _XCCb(XC* xc, XCCbReason cb, void* data1, void* data2, void* data3, void*userData) { CFStouXmppGw* gw; CFStouXmppGwConn* gwConn; gwConn = userData; gw = gwConn->gw; LCF_DBG_IN_FUNC(); if (cb == XC_CB_SESSION_CREATED) { iksfilter* filter; filter = XCGetFilter(&gwConn->xc); iks_filter_add_rule(filter, _XcFilterIqCtlHook, gwConn, IKS_RULE_TYPE, IKS_PAK_IQ, //IKS_RULE_NS, XMLNS_CTL, IKS_RULE_DONE); if (CFStouXmppGwConnSendAuthResutl(gwConn, TRUE)) { LCF_ERR("CFStouXmppGwConnSendAuthResutl() failed, maybe blocking\n"); CFStouXmppGwDestroyConn(gwConn->gw, gwConn); } else { gwConn->stat = CF_STOU_XMPP_GW_CONN_ST_TUNNEL_CREATED; } } else if (cb == XC_CB_ERROR) { XCError *err; LCF_DBG_N(); err = data1; switch (*err) { case XC_ERR_READ: case XC_ERR_WRITE: case XC_ERR_SERVER_DOWN: case XC_ERR_STREAM: case XC_ERR_STARTTLS: case XC_ERR_TLS_CONN: case XC_ERR_AUTH: case XC_ERR_BIND: case XC_ERR_SESSION: case XC_ERR_PARSE: case XC_ERR_PING_SVR_TIMEOUT: CFStouXmppGwDestroyConn(gw, gwConn); break; default: LCF_ERR("unhandled XC_ERR_%d\n", *err); break; } } else if (cb == XC_CB_SERVER_CLOSED_SESSION) { LCF_DBG_N(); CFStouXmppGwDestroyConn(gw, gwConn); } else { LCF_ERR("unhandled XC_CB_%d\n", cb); } }