diff options
-rw-r--r-- | src/event/server_events.c | 15 | ||||
-rw-r--r-- | src/event/server_events.h | 3 | ||||
-rw-r--r-- | src/xmpp/connection.c | 12 |
3 files changed, 29 insertions, 1 deletions
diff --git a/src/event/server_events.c b/src/event/server_events.c index 160d4472..6c575179 100644 --- a/src/event/server_events.c +++ b/src/event/server_events.c @@ -638,3 +638,18 @@ sv_ev_muc_occupant_online(const char * const room, const char * const nick, cons occupantswin_occupants(room); } } + +int +sv_ev_certfail(const char * const errormsg, const char * const certname, const char * const certfp, + const char * const notbefore, const char * const notafter) +{ + cons_show(""); + cons_show_error("TLS certficiate verification failed: %s", errormsg); + cons_show(" Issuer : %s", certname); + cons_show(" Fingerprint : %s", certfp); + cons_show(" Start : %s", notbefore); + cons_show(" End : %s", notafter); + cons_show(""); + + return 1; +} diff --git a/src/event/server_events.h b/src/event/server_events.h index 3ef8eae4..e9ada1ce 100644 --- a/src/event/server_events.h +++ b/src/event/server_events.h @@ -86,5 +86,8 @@ void sv_ev_muc_occupant_online(const char * const room, const char * const nick, void sv_ev_roster_update(const char * const barejid, const char * const name, GSList *groups, const char * const subscription, gboolean pending_out); void sv_ev_roster_received(void); +int sv_ev_certfail(const char * const errormsg, const char * const certname, const char * const certfp, + const char * const notbefore, const char * const notafter); + #endif diff --git a/src/xmpp/connection.c b/src/xmpp/connection.c index 6f9de18d..be60ad21 100644 --- a/src/xmpp/connection.c +++ b/src/xmpp/connection.c @@ -94,13 +94,16 @@ static GTimer *reconnect_timer; static log_level_t _get_log_level(xmpp_log_level_t xmpp_level); static xmpp_log_level_t _get_xmpp_log_level(); + static void _xmpp_file_logger(void * const userdata, const xmpp_log_level_t level, const char * const area, const char * const msg); + static xmpp_log_t * _xmpp_get_file_logger(); static jabber_conn_status_t _jabber_connect(const char * const fulljid, const char * const passwd, const char * const altdomain, int port); + static void _jabber_reconnect(void); static void _connection_handler(xmpp_conn_t * const conn, @@ -357,6 +360,13 @@ _connection_free_session_data(void) presence_clear_sub_requests(); } +static int +_connection_certfail_cb(const char * const certname, const char * const certfp, + char * const notbefore, const char * const notafter, const char * const errormsg) +{ + return sv_ev_certfail(errormsg, certname, certfp, notbefore, notafter); +} + static jabber_conn_status_t _jabber_connect(const char * const fulljid, const char * const passwd, const char * const altdomain, int port) @@ -408,7 +418,7 @@ _jabber_connect(const char * const fulljid, const char * const passwd, } int connect_status = xmpp_connect_client(jabber_conn.conn, altdomain, port, - _connection_handler, jabber_conn.ctx); + _connection_certfail_cb, _connection_handler, jabber_conn.ctx); if (connect_status == 0) jabber_conn.conn_status = JABBER_CONNECTING; |