From 3cb60399a18d47ff7f36ba0fe991dced95973c60 Mon Sep 17 00:00:00 2001 From: James Booth Date: Fri, 6 May 2016 02:02:23 +0100 Subject: Move connection_connect --- src/xmpp/connection.c | 38 +++++++++++++++++++++++++++++++++++++- src/xmpp/connection.h | 4 ++-- src/xmpp/session.c | 39 +++------------------------------------ 3 files changed, 42 insertions(+), 39 deletions(-) (limited to 'src') diff --git a/src/xmpp/connection.c b/src/xmpp/connection.c index 9f84597b..1ad6b1c7 100644 --- a/src/xmpp/connection.c +++ b/src/xmpp/connection.c @@ -36,6 +36,7 @@ #include #include +#include #ifdef HAVE_LIBMESODE #include @@ -45,6 +46,7 @@ #endif #include "log.h" +#include "config/preferences.h" #include "event/server_events.h" #include "xmpp/connection.h" #include "xmpp/session.h" @@ -67,6 +69,10 @@ static void _xmpp_file_logger(void *const userdata, const xmpp_log_level_t level static log_level_t _get_log_level(const xmpp_log_level_t xmpp_level); static void _connection_handler(xmpp_conn_t *const conn, const xmpp_conn_event_t status, const int error, xmpp_stream_error_t *const stream_error, void *const userdata); +static jabber_conn_status_t +_connection_connect(const char *const fulljid, const char *const passwd, const char *const altdomain, int port, + const char *const tls_policy, char *cert_path); + #ifdef HAVE_LIBMESODE static int _connection_certfail_cb(xmpp_tlscert_t *xmpptlscert, const char *const errormsg); #endif @@ -81,7 +87,37 @@ void connection_init(void) } jabber_conn_status_t -connection_connect(const char *const fulljid, const char *const passwd, const char *const altdomain, int port, +connection_connect_main(const char *const fulljid, const char *const passwd, const char *const altdomain, int port, + const char *const tls_policy) +{ + assert(fulljid != NULL); + assert(passwd != NULL); + + Jid *jid = jid_create(fulljid); + + if (jid == NULL) { + log_error("Malformed JID not able to connect: %s", fulljid); + conn.conn_status = JABBER_DISCONNECTED; + return conn.conn_status; + } else if (jid->fulljid == NULL) { + log_error("Full JID required to connect, received: %s", fulljid); + conn.conn_status = JABBER_DISCONNECTED; + jid_destroy(jid); + return conn.conn_status; + } + + jid_destroy(jid); + + log_info("Connecting as %s", fulljid); + char *cert_path = prefs_get_string(PREF_TLS_CERTPATH); + jabber_conn_status_t status = _connection_connect(fulljid, passwd, altdomain, port, tls_policy, cert_path); + prefs_free_string(cert_path); + + return status; +} + +static jabber_conn_status_t +_connection_connect(const char *const fulljid, const char *const passwd, const char *const altdomain, int port, const char *const tls_policy, char *cert_path) { if (conn.log) { diff --git a/src/xmpp/connection.h b/src/xmpp/connection.h index c223934d..6018dce1 100644 --- a/src/xmpp/connection.h +++ b/src/xmpp/connection.h @@ -39,8 +39,8 @@ void connection_init(void); -jabber_conn_status_t connection_connect(const char *const fulljid, const char *const passwd, const char *const altdomain, - int port, const char *const tls_policy, char *cert_path); +jabber_conn_status_t connection_connect_main(const char *const fulljid, const char *const passwd, const char *const altdomain, int port, + const char *const tls_policy); char *connection_get_domain(void); diff --git a/src/xmpp/session.c b/src/xmpp/session.c index 6aa27035..f2ec3b08 100644 --- a/src/xmpp/session.c +++ b/src/xmpp/session.c @@ -86,9 +86,6 @@ static struct { static GTimer *reconnect_timer; -static jabber_conn_status_t _session_connect(const char *const fulljid, const char *const passwd, - const char *const altdomain, int port, const char *const tls_policy); - static void _session_reconnect(void); static void _session_free_saved_account(void); @@ -129,7 +126,7 @@ session_connect_with_account(const ProfAccount *const account) // connect with fulljid Jid *jidp = jid_create_from_bare_and_resource(account->jid, account->resource); jabber_conn_status_t result = - _session_connect(jidp->fulljid, account->password, account->server, account->port, account->tls_policy); + connection_connect_main(jidp->fulljid, account->password, account->server, account->port, account->tls_policy); jid_destroy(jidp); return result; @@ -175,7 +172,7 @@ session_connect_with_details(const char *const jid, const char *const passwd, co // connect with fulljid log_info("Connecting without account, JID: %s", saved_details.jid); - return _session_connect( + return connection_connect_main( saved_details.jid, passwd, saved_details.altdomain, @@ -427,36 +424,6 @@ _session_info_destroy(DiscoInfo *info) } } -static jabber_conn_status_t -_session_connect(const char *const fulljid, const char *const passwd, const char *const altdomain, int port, - const char *const tls_policy) -{ - assert(fulljid != NULL); - assert(passwd != NULL); - - Jid *jid = jid_create(fulljid); - - if (jid == NULL) { - log_error("Malformed JID not able to connect: %s", fulljid); - connection_set_status(JABBER_DISCONNECTED); - return connection_get_status(); - } else if (jid->fulljid == NULL) { - log_error("Full JID required to connect, received: %s", fulljid); - connection_set_status(JABBER_DISCONNECTED); - jid_destroy(jid); - return connection_get_status(); - } - - jid_destroy(jid); - - log_info("Connecting as %s", fulljid); - char *cert_path = prefs_get_string(PREF_TLS_CERTPATH); - jabber_conn_status_t status = connection_connect(fulljid, passwd, altdomain, port, tls_policy, cert_path); - prefs_free_string(cert_path); - - return status; -} - static void _session_reconnect(void) { @@ -468,7 +435,7 @@ _session_reconnect(void) } else { char *fulljid = create_fulljid(account->jid, account->resource); log_debug("Attempting reconnect with account %s", account->name); - _session_connect(fulljid, saved_account.passwd, account->server, account->port, account->tls_policy); + connection_connect_main(fulljid, saved_account.passwd, account->server, account->port, account->tls_policy); free(fulljid); g_timer_start(reconnect_timer); } -- cgit 1.4.1-2-gfad0