Merge commit 'dustin/master'

* commit 'dustin/master':
  Ignore test artifacts.
  Ignore TAGS.
  Log the result of a connect.
  If an altdomain was specified, use it instead of SRV lookups.
  Free the connection language.
  Handle a case where the query has no namespace.
This commit is contained in:
Jack Moffitt
2009-04-14 14:53:29 -06:00
3 changed files with 25 additions and 4 deletions

9
.gitignore vendored
View File

@@ -16,7 +16,16 @@ examples/*.o
tests/*.o tests/*.o
tests/check_parser tests/check_parser
*.a *.a
TAGS
examples/basic examples/basic
examples/active examples/active
examples/roster examples/roster
examples/bot examples/bot
test_stamp
tests/*.o
tests/test_base64
tests/test_ctx
tests/test_hash
tests/test_jid
tests/test_sasl
tests/test_sock

View File

@@ -29,6 +29,7 @@
int version_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata) int version_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata)
{ {
xmpp_stanza_t *reply, *query, *name, *version, *text; xmpp_stanza_t *reply, *query, *name, *version, *text;
char *ns;
xmpp_ctx_t *ctx = (xmpp_ctx_t*)userdata; xmpp_ctx_t *ctx = (xmpp_ctx_t*)userdata;
printf("Received version request from %s\n", xmpp_stanza_get_attribute(stanza, "from")); 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); query = xmpp_stanza_new(ctx);
xmpp_stanza_set_name(query, "query"); 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); name = xmpp_stanza_new(ctx);
xmpp_stanza_set_name(name, "name"); xmpp_stanza_set_name(name, "name");

View File

@@ -269,6 +269,7 @@ int xmpp_conn_release(xmpp_conn_t * const conn)
if (conn->jid) xmpp_free(ctx, conn->jid); if (conn->jid) xmpp_free(ctx, conn->jid);
if (conn->pass) xmpp_free(ctx, conn->pass); if (conn->pass) xmpp_free(ctx, conn->pass);
if (conn->stream_id) xmpp_free(ctx, conn->stream_id); if (conn->stream_id) xmpp_free(ctx, conn->stream_id);
if (conn->lang) xmpp_free(ctx, conn->lang);
xmpp_free(ctx, conn); xmpp_free(ctx, conn);
released = 1; released = 1;
} }
@@ -382,18 +383,25 @@ int xmpp_connect_client(xmpp_conn_t * const conn,
conn->domain = xmpp_jid_domain(conn->ctx, conn->jid); conn->domain = xmpp_jid_domain(conn->ctx, conn->jid);
if (!conn->domain) return -1; 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."); xmpp_debug(conn->ctx, "xmpp", "SRV lookup failed.");
if (!altdomain) if (!altdomain)
domain = conn->domain; domain = conn->domain;
else else
domain = altdomain; 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); strcpy(connectdomain, domain);
connectport = altport ? altport : 5222; connectport = altport ? altport : 5222;
} }
conn->sock = sock_connect(connectdomain, connectport); 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; if (conn->sock == -1) return -1;
/* setup handler */ /* setup handler */