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:
9
.gitignore
vendored
9
.gitignore
vendored
@@ -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
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
14
src/conn.c
14
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->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 */
|
||||||
|
|||||||
Reference in New Issue
Block a user