10
src/auth.c
10
src/auth.c
@@ -209,9 +209,13 @@ static int _handle_features(xmpp_conn_t * const conn,
|
|||||||
|
|
||||||
/* check for TLS */
|
/* check for TLS */
|
||||||
if (!conn->secured) {
|
if (!conn->secured) {
|
||||||
child = xmpp_stanza_get_child_by_name(stanza, "starttls");
|
if (!conn->tls_disabled) {
|
||||||
if (child && (strcmp(xmpp_stanza_get_ns(child), XMPP_NS_TLS) == 0))
|
child = xmpp_stanza_get_child_by_name(stanza, "starttls");
|
||||||
conn->tls_support = 1;
|
if (child && (strcmp(xmpp_stanza_get_ns(child), XMPP_NS_TLS) == 0))
|
||||||
|
conn->tls_support = 1;
|
||||||
|
} else {
|
||||||
|
conn->tls_support = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check for SASL */
|
/* check for SASL */
|
||||||
|
|||||||
@@ -163,6 +163,7 @@ struct _xmpp_conn_t {
|
|||||||
tls_t *tls;
|
tls_t *tls;
|
||||||
|
|
||||||
int tls_support;
|
int tls_support;
|
||||||
|
int tls_disabled;
|
||||||
int tls_failed; /* set when tls fails, so we don't try again */
|
int tls_failed; /* set when tls fails, so we don't try again */
|
||||||
int sasl_support; /* if true, field is a bitfield of supported
|
int sasl_support; /* if true, field is a bitfield of supported
|
||||||
mechanisms */
|
mechanisms */
|
||||||
|
|||||||
12
src/conn.c
12
src/conn.c
@@ -109,6 +109,7 @@ xmpp_conn_t *xmpp_conn_new(xmpp_ctx_t * const ctx)
|
|||||||
conn->bound_jid = NULL;
|
conn->bound_jid = NULL;
|
||||||
|
|
||||||
conn->tls_support = 0;
|
conn->tls_support = 0;
|
||||||
|
conn->tls_disabled = 0;
|
||||||
conn->tls_failed = 0;
|
conn->tls_failed = 0;
|
||||||
conn->sasl_support = 0;
|
conn->sasl_support = 0;
|
||||||
conn->secured = 0;
|
conn->secured = 0;
|
||||||
@@ -666,6 +667,17 @@ void conn_open_stream(xmpp_conn_t * const conn)
|
|||||||
XMPP_NS_STREAMS);
|
XMPP_NS_STREAMS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Disable TLS for this connection, called by users of the library.
|
||||||
|
* Occasionally a server will be misconfigured to send the starttls
|
||||||
|
* feature, but wil not support the handshake.
|
||||||
|
*
|
||||||
|
* @param conn a Strophe connection object
|
||||||
|
*/
|
||||||
|
void xmpp_conn_disable_tls(xmpp_conn_t * const conn)
|
||||||
|
{
|
||||||
|
conn->tls_disabled = 1;
|
||||||
|
}
|
||||||
|
|
||||||
static void _log_open_tag(xmpp_conn_t *conn, char **attrs)
|
static void _log_open_tag(xmpp_conn_t *conn, char **attrs)
|
||||||
{
|
{
|
||||||
char buf[4096];
|
char buf[4096];
|
||||||
|
|||||||
@@ -217,6 +217,7 @@ void xmpp_conn_set_jid(xmpp_conn_t * const conn, const char * const jid);
|
|||||||
const char *xmpp_conn_get_pass(const xmpp_conn_t * const conn);
|
const char *xmpp_conn_get_pass(const xmpp_conn_t * const conn);
|
||||||
void xmpp_conn_set_pass(xmpp_conn_t * const conn, const char * const pass);
|
void xmpp_conn_set_pass(xmpp_conn_t * const conn, const char * const pass);
|
||||||
xmpp_ctx_t* xmpp_conn_get_context(xmpp_conn_t * const conn);
|
xmpp_ctx_t* xmpp_conn_get_context(xmpp_conn_t * const conn);
|
||||||
|
void xmpp_conn_disable_tls(xmpp_conn_t * const conn);
|
||||||
|
|
||||||
int xmpp_connect_client(xmpp_conn_t * const conn,
|
int xmpp_connect_client(xmpp_conn_t * const conn,
|
||||||
const char * const altdomain,
|
const char * const altdomain,
|
||||||
|
|||||||
Reference in New Issue
Block a user