From 2b661bd1f414f2b962144e26418e130ae3d875be Mon Sep 17 00:00:00 2001 From: Dustin Sallings Date: Wed, 8 Apr 2009 14:03:46 -0700 Subject: [PATCH 1/6] Handle a case where the query has no namespace. When I tried this sample code, it failed due to a NULL namespace being returned (and a later strdup(NULL)). --- examples/bot.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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"); From 3156f5044f2f184f63f5ab15da08c7fe2b05aea6 Mon Sep 17 00:00:00 2001 From: Dustin Sallings Date: Wed, 8 Apr 2009 14:06:57 -0700 Subject: [PATCH 2/6] Free the connection language. This created a memory leak when freeing a connection. --- src/conn.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/conn.c b/src/conn.c index af69cba..bdb0b8a 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; } From e852bfb62e9c52ec639311848ff7573640c64789 Mon Sep 17 00:00:00 2001 From: Dustin Sallings Date: Wed, 8 Apr 2009 15:41:45 -0700 Subject: [PATCH 3/6] If an altdomain was specified, use it instead of SRV lookups. For whatever reason, SRV lookups are hanging for me for about 30 seconds making testing suck. --- src/conn.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/conn.c b/src/conn.c index bdb0b8a..410f4cc 100644 --- a/src/conn.c +++ b/src/conn.c @@ -383,14 +383,19 @@ 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; } From 690c0c1e8567bef914a75782ce3511a83d061e48 Mon Sep 17 00:00:00 2001 From: Dustin Sallings Date: Wed, 8 Apr 2009 15:42:44 -0700 Subject: [PATCH 4/6] Log the result of a connect. --- src/conn.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/conn.c b/src/conn.c index 410f4cc..2f69d05 100644 --- a/src/conn.c +++ b/src/conn.c @@ -400,6 +400,8 @@ int xmpp_connect_client(xmpp_conn_t * const conn, 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 */ From 57454c9bf93c7e90b30f4764fa7cd2504a3e8290 Mon Sep 17 00:00:00 2001 From: Dustin Sallings Date: Wed, 8 Apr 2009 16:06:10 -0700 Subject: [PATCH 5/6] Ignore TAGS. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 2479024..3439868 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ examples/*.o tests/*.o tests/check_parser *.a +TAGS examples/basic examples/active examples/roster From a06ec862660a42978e22a4f5c2c4301718ad149c Mon Sep 17 00:00:00 2001 From: Dustin Sallings Date: Wed, 8 Apr 2009 16:07:33 -0700 Subject: [PATCH 6/6] Ignore test artifacts. --- .gitignore | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gitignore b/.gitignore index 3439868..5ffcc40 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,11 @@ 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