From 6f9be5ef39615c0657edd3c59d20c3246d29964a Mon Sep 17 00:00:00 2001 From: James Canete Date: Wed, 14 May 2008 20:48:48 +0000 Subject: [PATCH] Add alternate domain and port to xmpp_client_connect() for when SRV lookups fail. --- src/common.h | 2 ++ src/conn.c | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/common.h b/src/common.h index 2af7d09..f47ff38 100644 --- a/src/common.h +++ b/src/common.h @@ -171,6 +171,8 @@ struct _xmpp_conn_t { char *lang; char *domain; + char *connectdomain; + char *connectport; char *jid; char *pass; char *stream_id; diff --git a/src/conn.c b/src/conn.c index 4b52793..9faa4bb 100644 --- a/src/conn.c +++ b/src/conn.c @@ -67,6 +67,7 @@ xmpp_conn_t *xmpp_conn_new(xmpp_ctx_t * const ctx) conn->stream_id = NULL; conn->tls_support = 0; + conn->tls_failed = 0; conn->sasl_support = 0; conn->bind_required = 0; @@ -239,6 +240,8 @@ void xmpp_conn_set_pass(xmpp_conn_t * const conn, const char * const pass) int xmpp_connect_client(xmpp_conn_t * const conn, const char * const domain, + const char * const altdomain, + unsigned short altport, xmpp_conn_handler callback, void * const userdata) { @@ -254,9 +257,16 @@ int xmpp_connect_client(xmpp_conn_t * const conn, } if (!conn->domain) return -1; - sock_srv_lookup("xmpp-client", "tcp", conn->domain, connectdomain, 2048, &connectport); + if (!sock_srv_lookup("xmpp-client", "tcp", conn->domain, connectdomain, 2048, &connectport)) + { + if (altdomain) + { + strcpy(connectdomain, altdomain); + connectport = altport; + } + } conn->sock = sock_connect(connectdomain, connectport); - if (conn->sock < 0) return -1; + if (conn->sock == -1) return -1; /* setup handler */ conn->conn_handler = callback;