diff --git a/.gitignore b/.gitignore index 2479024..5ffcc40 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,16 @@ examples/*.o tests/*.o tests/check_parser *.a +TAGS examples/basic examples/active examples/roster examples/bot +test_stamp +tests/*.o +tests/test_base64 +tests/test_ctx +tests/test_hash +tests/test_jid +tests/test_sasl +tests/test_sock diff --git a/examples/bot.c b/examples/bot.c index e5bdeab..5dc0e70 100644 --- a/examples/bot.c +++ b/examples/bot.c @@ -29,6 +29,7 @@ int version_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata) { xmpp_stanza_t *reply, *query, *name, *version, *text; + char *ns; xmpp_ctx_t *ctx = (xmpp_ctx_t*)userdata; printf("Received version request from %s\n", xmpp_stanza_get_attribute(stanza, "from")); @@ -40,7 +41,10 @@ int version_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void query = xmpp_stanza_new(ctx); xmpp_stanza_set_name(query, "query"); - xmpp_stanza_set_ns(query, xmpp_stanza_get_ns(xmpp_stanza_get_children(stanza))); + ns = xmpp_stanza_get_ns(xmpp_stanza_get_children(stanza)); + if (ns) { + xmpp_stanza_set_ns(query, ns); + } name = xmpp_stanza_new(ctx); xmpp_stanza_set_name(name, "name"); diff --git a/src/conn.c b/src/conn.c index af69cba..2f69d05 100644 --- a/src/conn.c +++ b/src/conn.c @@ -269,6 +269,7 @@ int xmpp_conn_release(xmpp_conn_t * const conn) if (conn->jid) xmpp_free(ctx, conn->jid); if (conn->pass) xmpp_free(ctx, conn->pass); if (conn->stream_id) xmpp_free(ctx, conn->stream_id); + if (conn->lang) xmpp_free(ctx, conn->lang); xmpp_free(ctx, conn); released = 1; } @@ -382,18 +383,25 @@ int xmpp_connect_client(xmpp_conn_t * const conn, conn->domain = xmpp_jid_domain(conn->ctx, conn->jid); if (!conn->domain) return -1; - if (!sock_srv_lookup("xmpp-client", "tcp", conn->domain, connectdomain, 2048, &connectport)) - { + if (altdomain) { + xmpp_debug(conn->ctx, "xmpp", "Connecting via altdomain."); + strcpy(connectdomain, altdomain); + connectport = altport ? altport : 5222; + } else if (!sock_srv_lookup("xmpp-client", "tcp", conn->domain, + connectdomain, 2048, &connectport)) { xmpp_debug(conn->ctx, "xmpp", "SRV lookup failed."); if (!altdomain) domain = conn->domain; else domain = altdomain; - xmpp_debug(conn->ctx, "xmpp", "Using alternate domain %s, port %d", altdomain, altport); + xmpp_debug(conn->ctx, "xmpp", "Using alternate domain %s, port %d", + altdomain, altport); strcpy(connectdomain, domain); connectport = altport ? altport : 5222; } conn->sock = sock_connect(connectdomain, connectport); + xmpp_debug(conn->ctx, "xmpp", "sock_connect to %s:%d returned %d", + connectdomain, connectport, conn->sock); if (conn->sock == -1) return -1; /* setup handler */