From 3bb1f1241050d227932d5153abf49fdce9939efb Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 5 May 2016 23:51:49 +0100 Subject: [PATCH] Add session.c --- Makefile.am | 1 + src/command/command.c | 16 +- src/command/commands.c | 130 ++++---- src/otr/otr.c | 2 +- src/plugins/api.c | 4 +- src/plugins/plugins.c | 2 +- src/profanity.c | 8 +- src/ui/chatwin.c | 2 +- src/ui/console.c | 4 +- src/ui/core.c | 8 +- src/ui/rosterwin.c | 2 +- src/ui/titlebar.c | 2 +- src/ui/window.c | 2 +- src/window_list.c | 4 +- src/xmpp/connection.c | 356 ++++++++++++++++++++ src/xmpp/connection.h | 60 ++++ src/xmpp/iq.c | 6 +- src/xmpp/presence.c | 9 +- src/xmpp/session.c | 453 +++++++------------------- src/xmpp/session.h | 5 + src/xmpp/xmpp.h | 4 +- tests/unittests/test_cmd_account.c | 22 +- tests/unittests/test_cmd_bookmark.c | 20 +- tests/unittests/test_cmd_connect.c | 44 +-- tests/unittests/test_cmd_disconnect.c | 2 +- tests/unittests/test_cmd_join.c | 12 +- tests/unittests/test_cmd_otr.c | 24 +- tests/unittests/test_cmd_pgp.c | 4 +- tests/unittests/test_cmd_rooms.c | 6 +- tests/unittests/test_cmd_roster.c | 26 +- tests/unittests/test_cmd_sub.c | 4 +- tests/unittests/xmpp/stub_xmpp.c | 4 +- 32 files changed, 723 insertions(+), 525 deletions(-) create mode 100644 src/xmpp/connection.c create mode 100644 src/xmpp/connection.h diff --git a/Makefile.am b/Makefile.am index 6e8b423b..52ae369f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -7,6 +7,7 @@ core_sources = \ src/resource.c src/resource.h \ src/roster_list.c src/roster_list.h \ src/xmpp/xmpp.h src/xmpp/capabilities.c src/xmpp/session.c \ + src/xmpp/connection.h src/xmpp/connection.c \ src/xmpp/iq.c src/xmpp/message.c src/xmpp/presence.c src/xmpp/stanza.c \ src/xmpp/stanza.h src/xmpp/message.h src/xmpp/iq.h src/xmpp/presence.h \ src/xmpp/capabilities.h src/xmpp/session.h \ diff --git a/src/command/command.c b/src/command/command.c index 3f9a18cc..b68ce3d2 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -3066,7 +3066,7 @@ cmd_autocomplete(ProfWin *window, const char *const input) void cmd_reset_autocomplete(ProfWin *window) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status == JABBER_CONNECTED) { roster_reset_search_attempts(); @@ -3353,7 +3353,7 @@ _cmd_complete_parameters(ProfWin *window, const char *const input) int i; char *result = NULL; - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); // autocomplete boolean settings gchar *boolean_choices[] = { "/beep", "/intype", "/states", "/outtype", "/flash", "/splash", "/chlog", "/grlog", @@ -3545,7 +3545,7 @@ _who_autocomplete(ProfWin *window, const char *const input) return result; } } else { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status == JABBER_CONNECTED) { int i = 0; gchar *group_commands[] = { "/who any", "/who online", "/who offline", @@ -3626,7 +3626,7 @@ _roster_autocomplete(ProfWin *window, const char *const input) return result; } - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status == JABBER_CONNECTED) { result = autocomplete_param_with_func(input, "/roster nick", roster_barejid_autocomplete); if (result) { @@ -3711,7 +3711,7 @@ _group_autocomplete(ProfWin *window, const char *const input) { char *result = NULL; - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status == JABBER_CONNECTED) { result = autocomplete_param_with_func(input, "/group show", roster_group_autocomplete); @@ -3981,7 +3981,7 @@ _otr_autocomplete(ProfWin *window, const char *const input) { char *found = NULL; - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status == JABBER_CONNECTED) { found = autocomplete_param_with_func(input, "/otr start", roster_contact_autocomplete); @@ -4033,7 +4033,7 @@ _pgp_autocomplete(ProfWin *window, const char *const input) { char *found = NULL; - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status == JABBER_CONNECTED) { found = autocomplete_param_with_func(input, "/pgp start", roster_contact_autocomplete); @@ -4188,7 +4188,7 @@ _resource_autocomplete(ProfWin *window, const char *const input) { char *found = NULL; - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status == JABBER_CONNECTED && window->type == WIN_CHAT) { ProfChatWin *chatwin = (ProfChatWin*)window; assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK); diff --git a/src/command/commands.c b/src/command/commands.c index ada01d3f..df27d952 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -120,7 +120,7 @@ cmd_execute_default(ProfWin *window, const char *inp) return TRUE; } - jabber_conn_status_t status = jabber_get_connection_status(); + jabber_conn_status_t status = connection_get_status(); if (status != JABBER_CONNECTED) { ui_current_print_line("You are not currently connected."); return TRUE; @@ -227,7 +227,7 @@ gboolean cmd_tls_trust(ProfWin *window, const char *const command, gchar **args) { #ifdef HAVE_LIBMESODE - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); return TRUE; @@ -325,7 +325,7 @@ cmd_tls_cert(ProfWin *window, const char *const command, gchar **args) } return TRUE; } else { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); return TRUE; @@ -353,7 +353,7 @@ cmd_tls_cert(ProfWin *window, const char *const command, gchar **args) gboolean cmd_connect(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if ((conn_status != JABBER_DISCONNECTED) && (conn_status != JABBER_STARTED)) { cons_show("You are either connected already, or a login is in process."); return TRUE; @@ -685,7 +685,7 @@ gboolean _account_set_resource(char *account_name, char *resource) { accounts_set_resource(account_name, resource); - if (jabber_get_connection_status() == JABBER_CONNECTED) { + if (connection_get_status() == JABBER_CONNECTED) { cons_show("Updated resource for account %s: %s, reconnect to pick up the change.", account_name, resource); } else { cons_show("Updated resource for account %s: %s", account_name, resource); @@ -806,7 +806,7 @@ _account_set_theme(char *account_name, char *theme) } accounts_set_theme(account_name, theme); - if (jabber_get_connection_status() == JABBER_CONNECTED) { + if (connection_get_status() == JABBER_CONNECTED) { ProfAccount *account = accounts_get_account(jabber_get_account_name()); if (account) { if (g_strcmp0(account->name, account_name) == 0) { @@ -878,12 +878,12 @@ _account_set_presence_priority(char *account_name, char *presence, char *priorit break; } - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status == JABBER_CONNECTED) { char *connected_account = jabber_get_account_name(); resource_presence_t last_presence = accounts_get_last_presence(connected_account); if (presence_type == last_presence) { - char *message = jabber_get_presence_message(); + char *message = connection_get_presence_msg(); cl_ev_presence_send(last_presence, message, 0); } } @@ -999,7 +999,7 @@ cmd_account(ProfWin *window, const char *const command, gchar **args) return TRUE; } - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { cons_bad_cmd_usage(command); return TRUE; } @@ -1058,7 +1058,7 @@ _writecsv(int fd, const char *const str) gboolean cmd_export(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -1128,7 +1128,7 @@ write_error: gboolean cmd_sub(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are currently not connected."); @@ -1218,7 +1218,7 @@ cmd_sub(ProfWin *window, const char *const command, gchar **args) gboolean cmd_disconnect(ProfWin *window, const char *const command, gchar **args) { - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { cons_show("You are not currently connected."); return TRUE; } @@ -1344,7 +1344,7 @@ cmd_wins(ProfWin *window, const char *const command, gchar **args) gboolean cmd_close(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (g_strcmp0(args[0], "all") == 0) { int count = ui_close_all_wins(); @@ -2067,7 +2067,7 @@ _who_roster(ProfWin *window, const char *const command, gchar **args) gboolean cmd_who(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -2090,7 +2090,7 @@ cmd_msg(ProfWin *window, const char *const command, gchar **args) char *usr = args[0]; char *msg = args[1]; - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -2154,7 +2154,7 @@ cmd_msg(ProfWin *window, const char *const command, gchar **args) gboolean cmd_group(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -2261,7 +2261,7 @@ cmd_group(ProfWin *window, const char *const command, gchar **args) gboolean cmd_roster(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); // show roster if (args[0] == NULL) { @@ -2986,7 +2986,7 @@ cmd_roster(ProfWin *window, const char *const command, gchar **args) gboolean cmd_blocked(ProfWin *window, const char *const command, gchar **args) { - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { cons_show("You are not currently connected."); return TRUE; } @@ -3076,7 +3076,7 @@ cmd_resource(ProfWin *window, const char *const command, gchar **args) return TRUE; } - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); return TRUE; @@ -3132,7 +3132,7 @@ cmd_status(ProfWin *window, const char *const command, gchar **args) { char *usr = args[0]; - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -3208,7 +3208,7 @@ cmd_info(ProfWin *window, const char *const command, gchar **args) { char *usr = args[0]; - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -3291,7 +3291,7 @@ cmd_info(ProfWin *window, const char *const command, gchar **args) gboolean cmd_caps(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); Occupant *occupant = NULL; if (conn_status != JABBER_CONNECTED) { @@ -3367,7 +3367,7 @@ cmd_caps(ProfWin *window, const char *const command, gchar **args) gboolean cmd_software(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -3454,7 +3454,7 @@ cmd_software(ProfWin *window, const char *const command, gchar **args) gboolean cmd_join(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); return TRUE; @@ -3550,7 +3550,7 @@ cmd_invite(ProfWin *window, const char *const command, gchar **args) { char *contact = args[0]; char *reason = args[1]; - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -3824,7 +3824,7 @@ cmd_form_field(ProfWin *window, char *tag, gchar **args) gboolean cmd_form(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -3901,7 +3901,7 @@ cmd_form(ProfWin *window, const char *const command, gchar **args) gboolean cmd_kick(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -3934,7 +3934,7 @@ cmd_kick(ProfWin *window, const char *const command, gchar **args) gboolean cmd_ban(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -3962,7 +3962,7 @@ cmd_ban(ProfWin *window, const char *const command, gchar **args) gboolean cmd_subject(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -4052,7 +4052,7 @@ cmd_subject(ProfWin *window, const char *const command, gchar **args) gboolean cmd_affiliation(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -4122,7 +4122,7 @@ cmd_affiliation(ProfWin *window, const char *const command, gchar **args) gboolean cmd_role(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -4190,7 +4190,7 @@ cmd_role(ProfWin *window, const char *const command, gchar **args) gboolean cmd_room(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -4253,7 +4253,7 @@ cmd_room(ProfWin *window, const char *const command, gchar **args) gboolean cmd_occupants(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -4338,7 +4338,7 @@ cmd_occupants(ProfWin *window, const char *const command, gchar **args) gboolean cmd_rooms(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -4359,7 +4359,7 @@ cmd_rooms(ProfWin *window, const char *const command, gchar **args) gboolean cmd_bookmark(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -4470,7 +4470,7 @@ cmd_bookmark(ProfWin *window, const char *const command, gchar **args) gboolean cmd_disco(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -4500,7 +4500,7 @@ cmd_disco(ProfWin *window, const char *const command, gchar **args) gboolean cmd_sendfile(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); char *filename = args[0]; // expand ~ to $HOME @@ -4556,7 +4556,7 @@ cmd_lastactivity(ProfWin *window, const char *const command, gchar **args) return TRUE; } - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -4582,7 +4582,7 @@ cmd_lastactivity(ProfWin *window, const char *const command, gchar **args) gboolean cmd_nick(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -4735,7 +4735,7 @@ cmd_clear(ProfWin *window, const char *const command, gchar **args) gboolean cmd_leave(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); int index = wins_get_current_num(); if (window->type != WIN_MUC) { @@ -5334,7 +5334,7 @@ cmd_notify(ProfWin *window, const char *const command, gchar **args) // current chat room settings } else if (g_strcmp0(args[0], "on") == 0) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -5349,7 +5349,7 @@ cmd_notify(ProfWin *window, const char *const command, gchar **args) } } } else if (g_strcmp0(args[0], "off") == 0) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -5364,7 +5364,7 @@ cmd_notify(ProfWin *window, const char *const command, gchar **args) } } } else if (g_strcmp0(args[0], "mention") == 0) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -5392,7 +5392,7 @@ cmd_notify(ProfWin *window, const char *const command, gchar **args) } } } else if (g_strcmp0(args[0], "trigger") == 0) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -5420,7 +5420,7 @@ cmd_notify(ProfWin *window, const char *const command, gchar **args) } } } else if (g_strcmp0(args[0], "reset") == 0) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -5624,7 +5624,7 @@ cmd_autoping(ProfWin *window, const char *const command, gchar **args) gboolean cmd_ping(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -5748,7 +5748,7 @@ cmd_autoaway(ProfWin *window, const char *const command, gchar **args) gboolean cmd_priority(ProfWin *window, const char *const command, gchar **args) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); @@ -5763,7 +5763,7 @@ cmd_priority(ProfWin *window, const char *const command, gchar **args) if (res) { accounts_set_priority_all(jabber_get_account_name(), intval); resource_presence_t last_presence = accounts_get_last_presence(jabber_get_account_name()); - cl_ev_presence_send(last_presence, jabber_get_presence_message(), 0); + cl_ev_presence_send(last_presence, connection_get_presence_msg(), 0); cons_show("Priority set to %d.", intval); } else { cons_show(err_msg); @@ -5950,7 +5950,7 @@ cmd_carbons(ProfWin *window, const char *const command, gchar **args) { _cmd_set_boolean_preference(args[0], command, "Message carbons preference", PREF_CARBONS); - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status == JABBER_CONNECTED) { // enable carbons @@ -6122,7 +6122,7 @@ cmd_pgp(ProfWin *window, const char *const command, gchar **args) } if (g_strcmp0(args[0], "setkey") == 0) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); return TRUE; @@ -6151,7 +6151,7 @@ cmd_pgp(ProfWin *window, const char *const command, gchar **args) } if (g_strcmp0(args[0], "contacts") == 0) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); return TRUE; @@ -6195,7 +6195,7 @@ cmd_pgp(ProfWin *window, const char *const command, gchar **args) } if (g_strcmp0(args[0], "start") == 0) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You must be connected to start PGP encrpytion."); return TRUE; @@ -6257,7 +6257,7 @@ cmd_pgp(ProfWin *window, const char *const command, gchar **args) } if (g_strcmp0(args[0], "end") == 0) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); return TRUE; @@ -6375,7 +6375,7 @@ cmd_otr_policy(ProfWin *window, const char *const command, gchar **args) return TRUE; } - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { cons_show("You must be connected to set the OTR policy for a contact."); return TRUE; } @@ -6397,7 +6397,7 @@ gboolean cmd_otr_gen(ProfWin *window, const char *const command, gchar **args) { #ifdef HAVE_LIBOTR - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { cons_show("You must be connected with an account to load OTR information."); return TRUE; } @@ -6416,7 +6416,7 @@ gboolean cmd_otr_myfp(ProfWin *window, const char *const command, gchar **args) { #ifdef HAVE_LIBOTR - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { cons_show("You must be connected with an account to load OTR information."); return TRUE; } @@ -6440,7 +6440,7 @@ gboolean cmd_otr_theirfp(ProfWin *window, const char *const command, gchar **args) { #ifdef HAVE_LIBOTR - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { cons_show("You must be connected with an account to load OTR information."); return TRUE; } @@ -6471,7 +6471,7 @@ gboolean cmd_otr_start(ProfWin *window, const char *const command, gchar **args) { #ifdef HAVE_LIBOTR - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { cons_show("You must be connected with an account to load OTR information."); return TRUE; } @@ -6554,7 +6554,7 @@ gboolean cmd_otr_end(ProfWin *window, const char *const command, gchar **args) { #ifdef HAVE_LIBOTR - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { cons_show("You must be connected with an account to load OTR information."); return TRUE; } @@ -6584,7 +6584,7 @@ gboolean cmd_otr_trust(ProfWin *window, const char *const command, gchar **args) { #ifdef HAVE_LIBOTR - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { cons_show("You must be connected with an account to load OTR information."); return TRUE; } @@ -6614,7 +6614,7 @@ gboolean cmd_otr_untrust(ProfWin *window, const char *const command, gchar **args) { #ifdef HAVE_LIBOTR - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { cons_show("You must be connected with an account to load OTR information."); return TRUE; } @@ -6644,7 +6644,7 @@ gboolean cmd_otr_secret(ProfWin *window, const char *const command, gchar **args) { #ifdef HAVE_LIBOTR - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { cons_show("You must be connected with an account to load OTR information."); return TRUE; } @@ -6679,7 +6679,7 @@ gboolean cmd_otr_question(ProfWin *window, const char *const command, gchar **args) { #ifdef HAVE_LIBOTR - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { cons_show("You must be connected with an account to load OTR information."); return TRUE; } @@ -6715,7 +6715,7 @@ gboolean cmd_otr_answer(ProfWin *window, const char *const command, gchar **args) { #ifdef HAVE_LIBOTR - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { cons_show("You must be connected with an account to load OTR information."); return TRUE; } @@ -6764,7 +6764,7 @@ _update_presence(const resource_presence_t resource_presence, msg = args[0]; } - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { cons_show("You are not currently connected."); diff --git a/src/otr/otr.c b/src/otr/otr.c index 7b7b8e8e..33899087 100644 --- a/src/otr/otr.c +++ b/src/otr/otr.c @@ -87,7 +87,7 @@ cb_policy(void *opdata, ConnContext *context) static int cb_is_logged_in(void *opdata, const char *accountname, const char *protocol, const char *recipient) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { return PRESENCE_OFFLINE; } diff --git a/src/plugins/api.c b/src/plugins/api.c index 0de9bab0..602fbd0d 100644 --- a/src/plugins/api.c +++ b/src/plugins/api.c @@ -440,9 +440,9 @@ api_disco_add_feature(char *feature) caps_reset_ver(); // resend presence to update server's disco info data for this client - if (jabber_get_connection_status() == JABBER_CONNECTED) { + if (connection_get_status() == JABBER_CONNECTED) { resource_presence_t last_presence = accounts_get_last_presence(jabber_get_account_name()); - cl_ev_presence_send(last_presence, jabber_get_presence_message(), 0); + cl_ev_presence_send(last_presence, connection_get_presence_msg(), 0); } } diff --git a/src/plugins/plugins.c b/src/plugins/plugins.c index bb8e7563..5e363cf2 100644 --- a/src/plugins/plugins.c +++ b/src/plugins/plugins.c @@ -157,7 +157,7 @@ plugins_load(const char *const name) #endif if (plugin) { plugins = g_slist_append(plugins, plugin); - if (jabber_get_connection_status() == JABBER_CONNECTED) { + if (connection_get_status() == JABBER_CONNECTED) { const char *account_name = jabber_get_account_name(); const char *fulljid = jabber_get_fulljid(); plugin->init_func(plugin, PACKAGE_VERSION, PACKAGE_STATUS, account_name, fulljid); diff --git a/src/profanity.c b/src/profanity.c index 9e27b6e8..6bd1f0f9 100644 --- a/src/profanity.c +++ b/src/profanity.c @@ -148,7 +148,7 @@ prof_set_quit(void) void prof_handle_idle(void) { - jabber_conn_status_t status = jabber_get_connection_status(); + jabber_conn_status_t status = connection_get_status(); if (status == JABBER_CONNECTED) { GSList *recipients = wins_get_chat_recipients(); GSList *curr = recipients; @@ -169,7 +169,7 @@ prof_handle_idle(void) void prof_handle_activity(void) { - jabber_conn_status_t status = jabber_get_connection_status(); + jabber_conn_status_t status = connection_get_status(); ProfWin *current = wins_get_current(); if ((status == JABBER_CONNECTED) && (current->type == WIN_CHAT)) { @@ -197,7 +197,7 @@ _connect_default(const char *const account) static void _check_autoaway(void) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { return; } @@ -380,7 +380,7 @@ _shutdown(void) } } - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status == JABBER_CONNECTED) { cl_ev_disconnect(); } diff --git a/src/ui/chatwin.c b/src/ui/chatwin.c index f7e5eebb..415d4b57 100644 --- a/src/ui/chatwin.c +++ b/src/ui/chatwin.c @@ -360,7 +360,7 @@ chatwin_get_string(ProfChatWin *chatwin) GString *res = g_string_new("Chat "); - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status == JABBER_CONNECTED) { PContact contact = roster_get_contact(chatwin->barejid); if (contact == NULL) { diff --git a/src/ui/console.c b/src/ui/console.c index 9d21f2d7..d697aff2 100644 --- a/src/ui/console.c +++ b/src/ui/console.c @@ -845,7 +845,7 @@ cons_show_account_list(gchar **accounts) cons_show("Accounts:"); int i = 0; for (i = 0; i < size; i++) { - if ((jabber_get_connection_status() == JABBER_CONNECTED) && + if ((connection_get_status() == JABBER_CONNECTED) && (g_strcmp0(jabber_get_account_name(), accounts[i]) == 0)) { resource_presence_t presence = accounts_get_last_presence(accounts[i]); theme_item_t presence_colour = theme_main_presence_attrs(string_from_resource_presence(presence)); @@ -961,7 +961,7 @@ cons_show_account(ProfAccount *account) account->priority_chat, account->priority_online, account->priority_away, account->priority_xa, account->priority_dnd); - if ((jabber_get_connection_status() == JABBER_CONNECTED) && + if ((connection_get_status() == JABBER_CONNECTED) && (g_strcmp0(jabber_get_account_name(), account->name) == 0)) { GList *resources = jabber_get_available_resources(); GList *ordered_resources = NULL; diff --git a/src/ui/core.c b/src/ui/core.c index 4d9b4445..3e3c2b18 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -512,7 +512,7 @@ int ui_close_all_wins(void) { int count = 0; - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); GList *win_nums = wins_get_nums(); GList *curr = win_nums; @@ -539,7 +539,7 @@ int ui_close_read_wins(void) { int count = 0; - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); GList *win_nums = wins_get_nums(); GList *curr = win_nums; @@ -692,7 +692,7 @@ ui_close_win(int index) void ui_prune_wins(void) { - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); gboolean pruned = FALSE; GSList *wins = wins_get_prune_wins(); @@ -1104,7 +1104,7 @@ static void _ui_draw_term_title(void) { char new_win_title[100]; - jabber_conn_status_t status = jabber_get_connection_status(); + jabber_conn_status_t status = connection_get_status(); if (status == JABBER_CONNECTED) { const char * const jid = jabber_get_fulljid(); diff --git a/src/ui/rosterwin.c b/src/ui/rosterwin.c index fcacb4cd..9c1cfc80 100644 --- a/src/ui/rosterwin.c +++ b/src/ui/rosterwin.c @@ -85,7 +85,7 @@ rosterwin_roster(void) return; } - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status != JABBER_CONNECTED) { return; } diff --git a/src/ui/titlebar.c b/src/ui/titlebar.c index 2b50dbd7..ea1794d3 100644 --- a/src/ui/titlebar.c +++ b/src/ui/titlebar.c @@ -403,7 +403,7 @@ _show_contact_presence(ProfChatWin *chatwin) theme_item_t presence_colour = THEME_TITLE_OFFLINE; const char *presence = "offline"; - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status == JABBER_CONNECTED) { PContact contact = roster_get_contact(chatwin->barejid); if (contact) { diff --git a/src/ui/window.c b/src/ui/window.c index 3a96ca08..b9a8c7fd 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -263,7 +263,7 @@ win_get_title(ProfWin *window) if (window->type == WIN_CHAT) { ProfChatWin *chatwin = (ProfChatWin*) window; assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK); - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status == JABBER_CONNECTED) { PContact contact = roster_get_contact(chatwin->barejid); if (contact) { diff --git a/src/window_list.c b/src/window_list.c index 73fb37e8..01d5d412 100644 --- a/src/window_list.c +++ b/src/window_list.c @@ -374,7 +374,7 @@ wins_get_by_string(char *str) return (ProfWin*)chatwin; } - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status == JABBER_CONNECTED) { char *barejid = roster_barejid_from_name(str); if (barejid) { @@ -527,7 +527,7 @@ wins_close_by_num(int i) autocomplete_remove(wins_ac, chatwin->barejid); autocomplete_remove(wins_close_ac, chatwin->barejid); - jabber_conn_status_t conn_status = jabber_get_connection_status(); + jabber_conn_status_t conn_status = connection_get_status(); if (conn_status == JABBER_CONNECTED) { PContact contact = roster_get_contact(chatwin->barejid); if (contact) { diff --git a/src/xmpp/connection.c b/src/xmpp/connection.c new file mode 100644 index 00000000..87372d1e --- /dev/null +++ b/src/xmpp/connection.c @@ -0,0 +1,356 @@ +/* + * connection.c + * + * Copyright (C) 2012 - 2016 James Booth + * + * This file is part of Profanity. + * + * Profanity is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Profanity is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Profanity. If not, see . + * + * In addition, as a special exception, the copyright holders give permission to + * link the code of portions of this program with the OpenSSL library under + * certain conditions as described in each individual source file, and + * distribute linked combinations including the two. + * + * You must obey the GNU General Public License in all respects for all of the + * code used other than OpenSSL. If you modify file(s) with this exception, you + * may extend this exception to your version of the file(s), but you are not + * obligated to do so. If you do not wish to do so, delete this exception + * statement from your version. If you delete this exception statement from all + * source files in the program, then also delete it here. + * + */ + +#include "config.h" + +#include +#include + +#ifdef HAVE_LIBMESODE +#include +#endif +#ifdef HAVE_LIBSTROPHE +#include +#endif + +#include "log.h" +#include "event/server_events.h" +#include "xmpp/connection.h" +#include "xmpp/session.h" + +typedef struct prof_conn_t { + xmpp_log_t *log; + xmpp_ctx_t *ctx; + xmpp_conn_t *conn; + jabber_conn_status_t conn_status; + char *presence_message; + int priority; + char *domain; +} ProfConnection; + +static ProfConnection conn; + +static xmpp_log_t* _xmpp_get_file_logger(void); +static xmpp_log_level_t _get_xmpp_log_level(void); +static void _xmpp_file_logger(void *const userdata, const xmpp_log_level_t level, const char *const area, const char *const msg); +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); +#ifdef HAVE_LIBMESODE +static int _connection_certfail_cb(xmpp_tlscert_t *xmpptlscert, const char *const errormsg); +#endif + +void connection_init(void) +{ + conn.conn_status = JABBER_STARTED; + conn.presence_message = NULL; + conn.conn = NULL; + conn.ctx = NULL; + conn.domain = NULL; +} + +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) { + free(conn.log); + } + conn.log = _xmpp_get_file_logger(); + + if (conn.conn) { + xmpp_conn_release(conn.conn); + } + if (conn.ctx) { + xmpp_ctx_free(conn.ctx); + } + conn.ctx = xmpp_ctx_new(NULL, conn.log); + if (conn.ctx == NULL) { + log_warning("Failed to get libstrophe ctx during connect"); + return JABBER_DISCONNECTED; + } + conn.conn = xmpp_conn_new(conn.ctx); + if (conn.conn == NULL) { + log_warning("Failed to get libstrophe conn during connect"); + return JABBER_DISCONNECTED; + } + xmpp_conn_set_jid(conn.conn, fulljid); + xmpp_conn_set_pass(conn.conn, passwd); + + if (!tls_policy || (g_strcmp0(tls_policy, "force") == 0)) { + xmpp_conn_set_flags(conn.conn, XMPP_CONN_FLAG_MANDATORY_TLS); + } else if (g_strcmp0(tls_policy, "disable") == 0) { + xmpp_conn_set_flags(conn.conn, XMPP_CONN_FLAG_DISABLE_TLS); + } + +#ifdef HAVE_LIBMESODE + if (cert_path) { + xmpp_conn_tlscert_path(conn.conn, cert_path); + } +#endif + +#ifdef HAVE_LIBMESODE + int connect_status = xmpp_connect_client( + conn.conn, + altdomain, + port, + _connection_certfail_cb, + _connection_handler, + conn.ctx); +#else + int connect_status = xmpp_connect_client( + conn.conn, + altdomain, + port, + _connection_handler, + conn.ctx); +#endif + + if (connect_status == 0) { + conn.conn_status = JABBER_CONNECTING; + } else { + conn.conn_status = JABBER_DISCONNECTED; + } + + return conn.conn_status; +} + +jabber_conn_status_t +connection_get_status(void) +{ + return conn.conn_status; +} + +void +connection_set_status(jabber_conn_status_t status) +{ + conn.conn_status = status; +} + +xmpp_conn_t* +connection_get_conn(void) +{ + return conn.conn; +} + +xmpp_ctx_t* +connection_get_ctx(void) +{ + return conn.ctx; +} + +char * +connection_get_domain(void) +{ + return conn.domain; +} + +char * +connection_get_presence_msg(void) +{ + return conn.presence_message; +} + +void +connection_free_conn(void) +{ + if (conn.conn) { + xmpp_conn_release(conn.conn); + conn.conn = NULL; + } +} + +void +connection_free_ctx(void) +{ + if (conn.ctx) { + xmpp_ctx_free(conn.ctx); + conn.ctx = NULL; + } +} + +void +connection_free_presence_msg(void) +{ + FREE_SET_NULL(conn.presence_message); +} + +void +connection_set_presence_msg(const char *const message) +{ + FREE_SET_NULL(conn.presence_message); + if (message) { + conn.presence_message = strdup(message); + } +} + +void +connection_free_domain(void) +{ + FREE_SET_NULL(conn.domain); +} + +void +connection_free_log(void) +{ + free(conn.log); + conn.log = NULL; +} + +void +connection_set_priority(const int priority) +{ + conn.priority = priority; +} + +void +connection_set_domain(char *domain) +{ + conn.domain = strdup(domain); +} + +int +connection_is_secured(void) +{ + return xmpp_conn_is_secured(conn.conn); +} + +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) +{ + // login success + if (status == XMPP_CONN_CONNECT) { + log_debug("Connection handler: XMPP_CONN_CONNECT"); + connection_set_status(JABBER_CONNECTED); + + jabber_login_success(connection_is_secured()); + + } else if (status == XMPP_CONN_DISCONNECT) { + log_debug("Connection handler: XMPP_CONN_DISCONNECT"); + + // lost connection for unknown reason + if (connection_get_status() == JABBER_CONNECTED) { + log_debug("Connection handler: Lost connection for unknown reason"); + jabber_lost_connection(); + + // login attempt failed + } else if (connection_get_status() != JABBER_DISCONNECTING) { + log_debug("Connection handler: Login failed"); + jabber_login_failed(); + } + + // close stream response from server after disconnect is handled too + connection_set_status(JABBER_DISCONNECTED); + } else if (status == XMPP_CONN_FAIL) { + log_debug("Connection handler: XMPP_CONN_FAIL"); + } else { + log_error("Connection handler: Unknown status"); + } +} + +#ifdef HAVE_LIBMESODE +static int +_connection_certfail_cb(xmpp_tlscert_t *xmpptlscert, const char *const errormsg) +{ + int version = xmpp_conn_tlscert_version(xmpptlscert); + char *serialnumber = xmpp_conn_tlscert_serialnumber(xmpptlscert); + char *subjectname = xmpp_conn_tlscert_subjectname(xmpptlscert); + char *issuername = xmpp_conn_tlscert_issuername(xmpptlscert); + char *fingerprint = xmpp_conn_tlscert_fingerprint(xmpptlscert); + char *notbefore = xmpp_conn_tlscert_notbefore(xmpptlscert); + char *notafter = xmpp_conn_tlscert_notafter(xmpptlscert); + char *key_alg = xmpp_conn_tlscert_key_algorithm(xmpptlscert); + char *signature_alg = xmpp_conn_tlscert_signature_algorithm(xmpptlscert); + + TLSCertificate *cert = tlscerts_new(fingerprint, version, serialnumber, subjectname, issuername, notbefore, + notafter, key_alg, signature_alg); + int res = sv_ev_certfail(errormsg, cert); + tlscerts_free(cert); + + return res; +} +#endif + +static xmpp_log_t* +_xmpp_get_file_logger(void) +{ + xmpp_log_level_t level = _get_xmpp_log_level(); + xmpp_log_t *file_log = malloc(sizeof(xmpp_log_t)); + + file_log->handler = _xmpp_file_logger; + file_log->userdata = &level; + + return file_log; +} + +static xmpp_log_level_t +_get_xmpp_log_level(void) +{ + log_level_t prof_level = log_get_filter(); + + if (prof_level == PROF_LEVEL_DEBUG) { + return XMPP_LEVEL_DEBUG; + } else if (prof_level == PROF_LEVEL_INFO) { + return XMPP_LEVEL_INFO; + } else if (prof_level == PROF_LEVEL_WARN) { + return XMPP_LEVEL_WARN; + } else { + return XMPP_LEVEL_ERROR; + } +} + +static void +_xmpp_file_logger(void *const userdata, const xmpp_log_level_t level, const char *const area, const char *const msg) +{ + log_level_t prof_level = _get_log_level(level); + log_msg(prof_level, area, msg); + if ((g_strcmp0(area, "xmpp") == 0) || (g_strcmp0(area, "conn")) == 0) { + sv_ev_xmpp_stanza(msg); + } +} + +static log_level_t +_get_log_level(const xmpp_log_level_t xmpp_level) +{ + if (xmpp_level == XMPP_LEVEL_DEBUG) { + return PROF_LEVEL_DEBUG; + } else if (xmpp_level == XMPP_LEVEL_INFO) { + return PROF_LEVEL_INFO; + } else if (xmpp_level == XMPP_LEVEL_WARN) { + return PROF_LEVEL_WARN; + } else { + return PROF_LEVEL_ERROR; + } +} diff --git a/src/xmpp/connection.h b/src/xmpp/connection.h new file mode 100644 index 00000000..f9fc30cb --- /dev/null +++ b/src/xmpp/connection.h @@ -0,0 +1,60 @@ +/* + * connection.h + * + * Copyright (C) 2012 - 2016 James Booth + * + * This file is part of Profanity. + * + * Profanity is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Profanity is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Profanity. If not, see . + * + * In addition, as a special exception, the copyright holders give permission to + * link the code of portions of this program with the OpenSSL library under + * certain conditions as described in each individual source file, and + * distribute linked combinations including the two. + * + * You must obey the GNU General Public License in all respects for all of the + * code used other than OpenSSL. If you modify file(s) with this exception, you + * may extend this exception to your version of the file(s), but you are not + * obligated to do so. If you do not wish to do so, delete this exception + * statement from your version. If you delete this exception statement from all + * source files in the program, then also delete it here. + * + */ + +#ifndef XMPP_CONNECTION_H +#define XMPP_CONNECTION_H + +#include "xmpp/xmpp.h" + +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); + +char *connection_get_domain(void); + +void connection_set_status(jabber_conn_status_t status); +void connection_set_presence_msg(const char *const message); +void connection_set_priority(const int priority); +void connection_set_domain(char *domain); + +int connection_is_secured(void); + +void connection_free_conn(void); +void connection_free_ctx(void); +void connection_free_presence_msg(void); +void connection_free_domain(void); +void connection_free_log(void); + +#endif diff --git a/src/xmpp/iq.c b/src/xmpp/iq.c index be45bcbf..8a486a52 100644 --- a/src/xmpp/iq.c +++ b/src/xmpp/iq.c @@ -225,7 +225,7 @@ iq_id_handler_add(const char *const id, ProfIdCallback func, void *userdata) void iq_autoping_check(void) { - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { return; } @@ -253,7 +253,7 @@ iq_autoping_check(void) void iq_set_autoping(const int seconds) { - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { return; } @@ -959,7 +959,7 @@ _manual_pong_id_handler(xmpp_stanza_t *const stanza, void *const userdata) static int _autoping_timed_send(xmpp_conn_t *const conn, void *const userdata) { - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { return 1; } diff --git a/src/xmpp/presence.c b/src/xmpp/presence.c index 130a3fe9..a0deb9f0 100644 --- a/src/xmpp/presence.c +++ b/src/xmpp/presence.c @@ -55,6 +55,7 @@ #include "profanity.h" #include "ui/ui.h" #include "event/server_events.h" +#include "xmpp/connection.h" #include "xmpp/capabilities.h" #include "xmpp/session.h" #include "xmpp/stanza.h" @@ -238,7 +239,7 @@ presence_reset_sub_request_search(void) void presence_send(const resource_presence_t presence_type, const char *const msg, const int idle, char *signed_status) { - if (jabber_get_connection_status() != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { log_warning("Error setting presence, not connected."); return; } @@ -253,7 +254,7 @@ presence_send(const resource_presence_t presence_type, const char *const msg, co const int pri = accounts_get_priority_for_presence_type(jabber_get_account_name(), presence_type); const char *show = stanza_get_presence_string_from_type(presence_type); - connection_set_presence_message(msg); + connection_set_presence_msg(msg); connection_set_priority(pri); xmpp_stanza_t *presence = stanza_create_presence(ctx); @@ -332,7 +333,7 @@ presence_join_room(const char *const room, const char *const nick, const char *c resource_presence_t presence_type = accounts_get_last_presence(jabber_get_account_name()); const char *show = stanza_get_presence_string_from_type(presence_type); - char *status = jabber_get_presence_message(); + char *status = connection_get_presence_msg(); int pri = accounts_get_priority_for_presence_type(jabber_get_account_name(), presence_type); @@ -359,7 +360,7 @@ presence_change_room_nick(const char *const room, const char *const nick) resource_presence_t presence_type = accounts_get_last_presence(jabber_get_account_name()); const char *show = stanza_get_presence_string_from_type(presence_type); - char *status = jabber_get_presence_message(); + char *status = connection_get_presence_msg(); int pri = accounts_get_priority_for_presence_type(jabber_get_account_name(), presence_type); diff --git a/src/xmpp/session.c b/src/xmpp/session.c index 4d0d4a46..45424f4b 100644 --- a/src/xmpp/session.c +++ b/src/xmpp/session.c @@ -56,6 +56,7 @@ #include "event/server_events.h" #include "xmpp/bookmark.h" #include "xmpp/blocking.h" +#include "xmpp/connection.h" #include "xmpp/capabilities.h" #include "xmpp/session.h" #include "xmpp/iq.h" @@ -65,16 +66,6 @@ #include "xmpp/stanza.h" #include "xmpp/xmpp.h" -static struct _jabber_conn_t { - xmpp_log_t *log; - xmpp_ctx_t *ctx; - xmpp_conn_t *conn; - jabber_conn_status_t conn_status; - char *presence_message; - int priority; - char *domain; -} jabber_conn; - static GHashTable *available_resources; static GSList *disco_items; @@ -95,21 +86,10 @@ static struct { 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(void); - -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(void); - static jabber_conn_status_t _jabber_connect(const char *const fulljid, const char *const passwd, const char *const altdomain, int port, const char *const tls_policy); static void _jabber_reconnect(void); -static void _jabber_lost_connection(void); -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); void _connection_free_saved_account(void); void _connection_free_saved_details(void); @@ -131,11 +111,7 @@ void jabber_init(void) { log_info("Initialising XMPP"); - jabber_conn.conn_status = JABBER_STARTED; - jabber_conn.presence_message = NULL; - jabber_conn.conn = NULL; - jabber_conn.ctx = NULL; - jabber_conn.domain = NULL; + connection_init(); presence_sub_requests_init(); caps_init(); available_resources = g_hash_table_new_full(g_str_hash, g_str_equal, free, (GDestroyNotify)resource_destroy); @@ -220,67 +196,59 @@ jabber_connect_with_details(const char *const jid, const char *const passwd, con void connection_autoping_fail(void) { - if (jabber_conn.conn_status == JABBER_CONNECTED) { + if (connection_get_status() == JABBER_CONNECTED) { log_info("Closing connection"); char *account_name = jabber_get_account_name(); const char *fulljid = jabber_get_fulljid(); plugins_on_disconnect(account_name, fulljid); accounts_set_last_activity(jabber_get_account_name()); - jabber_conn.conn_status = JABBER_DISCONNECTING; - xmpp_disconnect(jabber_conn.conn); + connection_set_status(JABBER_DISCONNECTING); + xmpp_disconnect(connection_get_conn()); - while (jabber_get_connection_status() == JABBER_DISCONNECTING) { + while (connection_get_status() == JABBER_DISCONNECTING) { jabber_process_events(10); } - if (jabber_conn.conn) { - xmpp_conn_release(jabber_conn.conn); - jabber_conn.conn = NULL; - } - if (jabber_conn.ctx) { - xmpp_ctx_free(jabber_conn.ctx); - jabber_conn.ctx = NULL; - } + + connection_free_conn(); + connection_free_ctx(); } - FREE_SET_NULL(jabber_conn.presence_message); - FREE_SET_NULL(jabber_conn.domain); + connection_free_presence_msg(); + connection_free_domain(); - jabber_conn.conn_status = JABBER_DISCONNECTED; - _jabber_lost_connection(); + connection_set_status(JABBER_DISCONNECTED); + + jabber_lost_connection(); } void jabber_disconnect(void) { // if connected, send end stream and wait for response - if (jabber_conn.conn_status == JABBER_CONNECTED) { + if (connection_get_status() == JABBER_CONNECTED) { char *account_name = jabber_get_account_name(); const char *fulljid = jabber_get_fulljid(); plugins_on_disconnect(account_name, fulljid); log_info("Closing connection"); accounts_set_last_activity(jabber_get_account_name()); - jabber_conn.conn_status = JABBER_DISCONNECTING; - xmpp_disconnect(jabber_conn.conn); + connection_set_status(JABBER_DISCONNECTING); + xmpp_disconnect(connection_get_conn()); - while (jabber_get_connection_status() == JABBER_DISCONNECTING) { + while (connection_get_status() == JABBER_DISCONNECTING) { jabber_process_events(10); } _connection_free_saved_account(); _connection_free_saved_details(); _connection_free_session_data(); - if (jabber_conn.conn) { - xmpp_conn_release(jabber_conn.conn); - jabber_conn.conn = NULL; - } - if (jabber_conn.ctx) { - xmpp_ctx_free(jabber_conn.ctx); - jabber_conn.ctx = NULL; - } + + connection_free_conn(); + connection_free_ctx(); } - jabber_conn.conn_status = JABBER_STARTED; - FREE_SET_NULL(jabber_conn.presence_message); - FREE_SET_NULL(jabber_conn.domain); + connection_free_presence_msg(); + connection_free_domain(); + + connection_set_status(JABBER_STARTED); } void @@ -290,8 +258,7 @@ jabber_shutdown(void) _connection_free_saved_details(); _connection_free_session_data(); xmpp_shutdown(); - free(jabber_conn.log); - jabber_conn.log = NULL; + connection_free_log(); } void @@ -299,12 +266,13 @@ jabber_process_events(int millis) { int reconnect_sec; - switch (jabber_conn.conn_status) + jabber_conn_status_t conn_status = connection_get_status(); + switch (conn_status) { case JABBER_CONNECTED: case JABBER_CONNECTING: case JABBER_DISCONNECTING: - xmpp_run_once(jabber_conn.ctx, millis); + xmpp_run_once(connection_get_ctx(), millis); break; case JABBER_DISCONNECTED: reconnect_sec = prefs_get_reconnect(); @@ -326,12 +294,6 @@ jabber_get_available_resources(void) return g_hash_table_get_values(available_resources); } -jabber_conn_status_t -jabber_get_connection_status(void) -{ - return (jabber_conn.conn_status); -} - GSList* connection_get_disco_items(void) { @@ -359,28 +321,10 @@ connection_set_disco_items(GSList *_disco_items) disco_items = _disco_items; } -xmpp_conn_t* -connection_get_conn(void) -{ - return jabber_conn.conn; -} - -xmpp_ctx_t* -connection_get_ctx(void) -{ - return jabber_conn.ctx; -} - const char* jabber_get_fulljid(void) { - return xmpp_conn_get_jid(jabber_conn.conn); -} - -char* -jabber_get_presence_message(void) -{ - return jabber_conn.presence_message; + return xmpp_conn_get_jid(connection_get_conn()); } char* @@ -392,32 +336,17 @@ jabber_get_account_name(void) char* jabber_create_uuid(void) { - return xmpp_uuid_gen(jabber_conn.ctx); + return xmpp_uuid_gen(connection_get_ctx()); } void jabber_free_uuid(char *uuid) { if (uuid) { - xmpp_free(jabber_conn.ctx, uuid); + xmpp_free(connection_get_ctx(), uuid); } } -void -connection_set_presence_message(const char *const message) -{ - FREE_SET_NULL(jabber_conn.presence_message); - if (message) { - jabber_conn.presence_message = strdup(message); - } -} - -void -connection_set_priority(const int priority) -{ - jabber_conn.priority = priority; -} - void connection_add_available_resource(Resource *resource) { @@ -457,32 +386,83 @@ _connection_free_session_data(void) presence_clear_sub_requests(); } -#ifdef HAVE_LIBMESODE -static int -_connection_certfail_cb(xmpp_tlscert_t *xmpptlscert, const char *const errormsg) +void +jabber_login_success(int secured) { - int version = xmpp_conn_tlscert_version(xmpptlscert); - char *serialnumber = xmpp_conn_tlscert_serialnumber(xmpptlscert); - char *subjectname = xmpp_conn_tlscert_subjectname(xmpptlscert); - char *issuername = xmpp_conn_tlscert_issuername(xmpptlscert); - char *fingerprint = xmpp_conn_tlscert_fingerprint(xmpptlscert); - char *notbefore = xmpp_conn_tlscert_notbefore(xmpptlscert); - char *notafter = xmpp_conn_tlscert_notafter(xmpptlscert); - char *key_alg = xmpp_conn_tlscert_key_algorithm(xmpptlscert); - char *signature_alg = xmpp_conn_tlscert_signature_algorithm(xmpptlscert); + // logged in with account + if (saved_account.name) { + log_debug("Connection handler: logged in with account name: %s", saved_account.name); + sv_ev_login_account_success(saved_account.name, secured); - TLSCertificate *cert = tlscerts_new(fingerprint, version, serialnumber, subjectname, issuername, notbefore, - notafter, key_alg, signature_alg); - int res = sv_ev_certfail(errormsg, cert); - tlscerts_free(cert); + // logged in without account, use details to create new account + } else { + log_debug("Connection handler: logged in with jid: %s", saved_details.name); + accounts_add(saved_details.name, saved_details.altdomain, saved_details.port, saved_details.tls_policy); + accounts_set_jid(saved_details.name, saved_details.jid); - return res; + sv_ev_login_account_success(saved_details.name, secured); + saved_account.name = strdup(saved_details.name); + saved_account.passwd = strdup(saved_details.passwd); + + _connection_free_saved_details(); + } + + Jid *my_jid = jid_create(jabber_get_fulljid()); + connection_set_domain(my_jid->domainpart); + jid_destroy(my_jid); + + chat_sessions_init(); + + message_handlers_init(); + presence_handlers_init(); + iq_handlers_init(); + + roster_request(); + bookmark_request(); + blocking_request(); + + // items discovery + DiscoInfo *info = malloc(sizeof(struct disco_info_t)); + info->item = strdup(connection_get_domain()); + info->features = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL); + disco_items = g_slist_append(disco_items, info); + iq_disco_info_request_onconnect(info->item); + iq_disco_items_request_onconnect(connection_get_domain()); + + if (prefs_get_boolean(PREF_CARBONS)){ + iq_enable_carbons(); + } + + if ((prefs_get_reconnect() != 0) && reconnect_timer) { + g_timer_destroy(reconnect_timer); + reconnect_timer = NULL; + } } +void +jabber_login_failed(void) +{ + if (reconnect_timer == NULL) { + log_debug("Connection handler: No reconnect timer"); + sv_ev_failed_login(); + _connection_free_saved_account(); + _connection_free_saved_details(); + _connection_free_session_data(); + } else { + log_debug("Connection handler: Restarting reconnect timer"); + if (prefs_get_reconnect() != 0) { + g_timer_start(reconnect_timer); + } + // free resources but leave saved_user untouched + _connection_free_session_data(); + } +} + +#ifdef HAVE_LIBMESODE TLSCertificate* jabber_get_tls_peer_cert(void) { - xmpp_tlscert_t *xmpptlscert = xmpp_conn_tls_peer_cert(jabber_conn.conn); + xmpp_tlscert_t *xmpptlscert = xmpp_conn_tls_peer_cert(connection_get_conn()); int version = xmpp_conn_tlscert_version(xmpptlscert); char *serialnumber = xmpp_conn_tlscert_serialnumber(xmpptlscert); char *subjectname = xmpp_conn_tlscert_subjectname(xmpptlscert); @@ -496,7 +476,7 @@ jabber_get_tls_peer_cert(void) TLSCertificate *cert = tlscerts_new(fingerprint, version, serialnumber, subjectname, issuername, notbefore, notafter, key_alg, signature_alg); - xmpp_conn_free_tlscert(jabber_conn.ctx, xmpptlscert); + xmpp_conn_free_tlscert(connection_get_ctx(), xmpptlscert); return cert; } @@ -505,8 +485,8 @@ jabber_get_tls_peer_cert(void) gboolean jabber_conn_is_secured(void) { - if (jabber_conn.conn_status == JABBER_CONNECTED) { - return xmpp_conn_is_secured(jabber_conn.conn) == 0 ? FALSE : TRUE; + if (connection_get_status() == JABBER_CONNECTED) { + return xmpp_conn_is_secured(connection_get_conn()) == 0 ? FALSE : TRUE; } else { return FALSE; } @@ -515,10 +495,10 @@ jabber_conn_is_secured(void) gboolean jabber_send_stanza(const char *const stanza) { - if (jabber_conn.conn_status != JABBER_CONNECTED) { + if (connection_get_status() != JABBER_CONNECTED) { return FALSE; } else { - xmpp_send_raw_string(jabber_conn.conn, "%s", stanza); + xmpp_send_raw_string(connection_get_conn(), "%s", stanza); return TRUE; } } @@ -534,80 +514,23 @@ _jabber_connect(const char *const fulljid, const char *const passwd, const char if (jid == NULL) { log_error("Malformed JID not able to connect: %s", fulljid); - jabber_conn.conn_status = JABBER_DISCONNECTED; - return jabber_conn.conn_status; + connection_set_status(JABBER_DISCONNECTED); + return connection_get_status(); } else if (jid->fulljid == NULL) { log_error("Full JID required to connect, received: %s", fulljid); - jabber_conn.conn_status = JABBER_DISCONNECTED; + connection_set_status(JABBER_DISCONNECTED); jid_destroy(jid); - return jabber_conn.conn_status; + return connection_get_status(); } jid_destroy(jid); log_info("Connecting as %s", fulljid); - if (jabber_conn.log) { - free(jabber_conn.log); - } - jabber_conn.log = _xmpp_get_file_logger(); - - if (jabber_conn.conn) { - xmpp_conn_release(jabber_conn.conn); - } - if (jabber_conn.ctx) { - xmpp_ctx_free(jabber_conn.ctx); - } - jabber_conn.ctx = xmpp_ctx_new(NULL, jabber_conn.log); - if (jabber_conn.ctx == NULL) { - log_warning("Failed to get libstrophe ctx during connect"); - return JABBER_DISCONNECTED; - } - jabber_conn.conn = xmpp_conn_new(jabber_conn.ctx); - if (jabber_conn.conn == NULL) { - log_warning("Failed to get libstrophe conn during connect"); - return JABBER_DISCONNECTED; - } - xmpp_conn_set_jid(jabber_conn.conn, fulljid); - xmpp_conn_set_pass(jabber_conn.conn, passwd); - - if (!tls_policy || (g_strcmp0(tls_policy, "force") == 0)) { - xmpp_conn_set_flags(jabber_conn.conn, XMPP_CONN_FLAG_MANDATORY_TLS); - } else if (g_strcmp0(tls_policy, "disable") == 0) { - xmpp_conn_set_flags(jabber_conn.conn, XMPP_CONN_FLAG_DISABLE_TLS); - } - -#ifdef HAVE_LIBMESODE char *cert_path = prefs_get_string(PREF_TLS_CERTPATH); - if (cert_path) { - xmpp_conn_tlscert_path(jabber_conn.conn, cert_path); - } + jabber_conn_status_t status = connection_connect(fulljid, passwd, altdomain, port, tls_policy, cert_path); prefs_free_string(cert_path); -#endif -#ifdef HAVE_LIBMESODE - int connect_status = xmpp_connect_client( - jabber_conn.conn, - altdomain, - port, - _connection_certfail_cb, - _connection_handler, - jabber_conn.ctx); -#else - int connect_status = xmpp_connect_client( - jabber_conn.conn, - altdomain, - port, - _connection_handler, - jabber_conn.ctx); -#endif - - if (connect_status == 0) { - jabber_conn.conn_status = JABBER_CONNECTING; - } else { - jabber_conn.conn_status = JABBER_DISCONNECTED; - } - - return jabber_conn.conn_status; + return status; } static void @@ -627,8 +550,8 @@ _jabber_reconnect(void) } } -static void -_jabber_lost_connection(void) +void +jabber_lost_connection(void) { sv_ev_lost_connection(); if (prefs_get_reconnect() != 0) { @@ -640,151 +563,3 @@ _jabber_lost_connection(void) } _connection_free_session_data(); } - -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) -{ - // login success - if (status == XMPP_CONN_CONNECT) { - log_debug("Connection handler: XMPP_CONN_CONNECT"); - jabber_conn.conn_status = JABBER_CONNECTED; - - int secured = xmpp_conn_is_secured(jabber_conn.conn); - - // logged in with account - if (saved_account.name) { - log_debug("Connection handler: logged in with account name: %s", saved_account.name); - sv_ev_login_account_success(saved_account.name, secured); - - // logged in without account, use details to create new account - } else { - log_debug("Connection handler: logged in with jid: %s", saved_details.name); - accounts_add(saved_details.name, saved_details.altdomain, saved_details.port, saved_details.tls_policy); - accounts_set_jid(saved_details.name, saved_details.jid); - - sv_ev_login_account_success(saved_details.name, secured); - saved_account.name = strdup(saved_details.name); - saved_account.passwd = strdup(saved_details.passwd); - - _connection_free_saved_details(); - } - - Jid *my_jid = jid_create(jabber_get_fulljid()); - jabber_conn.domain = strdup(my_jid->domainpart); - jid_destroy(my_jid); - - chat_sessions_init(); - - message_handlers_init(); - presence_handlers_init(); - iq_handlers_init(); - - roster_request(); - bookmark_request(); - blocking_request(); - - // items discovery - DiscoInfo *info = malloc(sizeof(struct disco_info_t)); - info->item = strdup(jabber_conn.domain); - info->features = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL); - disco_items = g_slist_append(disco_items, info); - iq_disco_info_request_onconnect(info->item); - iq_disco_items_request_onconnect(jabber_conn.domain); - - if (prefs_get_boolean(PREF_CARBONS)){ - iq_enable_carbons(); - } - - if ((prefs_get_reconnect() != 0) && reconnect_timer) { - g_timer_destroy(reconnect_timer); - reconnect_timer = NULL; - } - - } else if (status == XMPP_CONN_DISCONNECT) { - log_debug("Connection handler: XMPP_CONN_DISCONNECT"); - - // lost connection for unknown reason - if (jabber_conn.conn_status == JABBER_CONNECTED) { - log_debug("Connection handler: Lost connection for unknown reason"); - _jabber_lost_connection(); - - // login attempt failed - } else if (jabber_conn.conn_status != JABBER_DISCONNECTING) { - log_debug("Connection handler: Login failed"); - if (reconnect_timer == NULL) { - log_debug("Connection handler: No reconnect timer"); - sv_ev_failed_login(); - _connection_free_saved_account(); - _connection_free_saved_details(); - _connection_free_session_data(); - } else { - log_debug("Connection handler: Restarting reconnect timer"); - if (prefs_get_reconnect() != 0) { - g_timer_start(reconnect_timer); - } - // free resources but leave saved_user untouched - _connection_free_session_data(); - } - } - - // close stream response from server after disconnect is handled too - jabber_conn.conn_status = JABBER_DISCONNECTED; - } else if (status == XMPP_CONN_FAIL) { - log_debug("Connection handler: XMPP_CONN_FAIL"); - } else { - log_error("Connection handler: Unknown status"); - } -} - -static log_level_t -_get_log_level(const xmpp_log_level_t xmpp_level) -{ - if (xmpp_level == XMPP_LEVEL_DEBUG) { - return PROF_LEVEL_DEBUG; - } else if (xmpp_level == XMPP_LEVEL_INFO) { - return PROF_LEVEL_INFO; - } else if (xmpp_level == XMPP_LEVEL_WARN) { - return PROF_LEVEL_WARN; - } else { - return PROF_LEVEL_ERROR; - } -} - -static xmpp_log_level_t -_get_xmpp_log_level() -{ - log_level_t prof_level = log_get_filter(); - - if (prof_level == PROF_LEVEL_DEBUG) { - return XMPP_LEVEL_DEBUG; - } else if (prof_level == PROF_LEVEL_INFO) { - return XMPP_LEVEL_INFO; - } else if (prof_level == PROF_LEVEL_WARN) { - return XMPP_LEVEL_WARN; - } else { - return XMPP_LEVEL_ERROR; - } -} - -static void -_xmpp_file_logger(void *const userdata, const xmpp_log_level_t level, const char *const area, const char *const msg) -{ - log_level_t prof_level = _get_log_level(level); - log_msg(prof_level, area, msg); - if ((g_strcmp0(area, "xmpp") == 0) || (g_strcmp0(area, "conn")) == 0) { - sv_ev_xmpp_stanza(msg); - } -} - -static xmpp_log_t* -_xmpp_get_file_logger() -{ - xmpp_log_level_t level = _get_xmpp_log_level(); - xmpp_log_t *file_log = malloc(sizeof(xmpp_log_t)); - - file_log->handler = _xmpp_file_logger; - file_log->userdata = &level; - - return file_log; -} diff --git a/src/xmpp/session.h b/src/xmpp/session.h index 556523a1..a8d51ff4 100644 --- a/src/xmpp/session.h +++ b/src/xmpp/session.h @@ -58,4 +58,9 @@ void connection_autoping_fail(void); GSList* connection_get_disco_items(void); void connection_set_disco_items(GSList *disco_items); +void jabber_login_success(int secured); +void jabber_login_failed(void); +void jabber_lost_connection(void); + + #endif diff --git a/src/xmpp/xmpp.h b/src/xmpp/xmpp.h index d8478642..add882bb 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -118,8 +118,8 @@ void jabber_disconnect(void); void jabber_shutdown(void); void jabber_process_events(int millis); const char* jabber_get_fulljid(void); -jabber_conn_status_t jabber_get_connection_status(void); -char* jabber_get_presence_message(void); +jabber_conn_status_t connection_get_status(void); +char *connection_get_presence_msg(void); char* jabber_get_account_name(void); GList* jabber_get_available_resources(void); char* jabber_create_uuid(void); diff --git a/tests/unittests/test_cmd_account.c b/tests/unittests/test_cmd_account.c index 701deb8d..37fe815e 100644 --- a/tests/unittests/test_cmd_account.c +++ b/tests/unittests/test_cmd_account.c @@ -21,7 +21,7 @@ void cmd_account_shows_usage_when_not_connected_and_no_args(void **state) { gchar *args[] = { NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_string(cons_bad_cmd_usage, cmd, CMD_ACCOUNT); @@ -36,7 +36,7 @@ void cmd_account_shows_account_when_connected_and_no_args(void **state) TRUE, NULL, 0, NULL, NULL, NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); gchar *args[] = { NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); will_return(jabber_get_account_name, "account_name"); expect_any(accounts_get_account, name); will_return(accounts_get_account, account); @@ -371,7 +371,7 @@ void cmd_account_set_resource_sets_resource(void **state) { gchar *args[] = { "set", "a_account", "resource", "a_resource", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_any(accounts_account_exists, account_name); will_return(accounts_account_exists, TRUE); @@ -390,7 +390,7 @@ void cmd_account_set_resource_sets_resource_with_online_message(void **state) { gchar *args[] = { "set", "a_account", "resource", "a_resource", NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_any(accounts_account_exists, account_name); will_return(accounts_account_exists, TRUE); @@ -644,7 +644,7 @@ void cmd_account_set_online_priority_sets_preference(void **state) expect_string(accounts_set_priority_online, account_name, "a_account"); expect_value(accounts_set_priority_online, value, 10); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_cons_show("Updated online priority for account a_account: 10"); expect_cons_show(""); @@ -663,7 +663,7 @@ void cmd_account_set_chat_priority_sets_preference(void **state) expect_string(accounts_set_priority_chat, account_name, "a_account"); expect_value(accounts_set_priority_chat, value, 10); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_cons_show("Updated chat priority for account a_account: 10"); expect_cons_show(""); @@ -682,7 +682,7 @@ void cmd_account_set_away_priority_sets_preference(void **state) expect_string(accounts_set_priority_away, account_name, "a_account"); expect_value(accounts_set_priority_away, value, 10); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_cons_show("Updated away priority for account a_account: 10"); expect_cons_show(""); @@ -701,7 +701,7 @@ void cmd_account_set_xa_priority_sets_preference(void **state) expect_string(accounts_set_priority_xa, account_name, "a_account"); expect_value(accounts_set_priority_xa, value, 10); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_cons_show("Updated xa priority for account a_account: 10"); expect_cons_show(""); @@ -720,7 +720,7 @@ void cmd_account_set_dnd_priority_sets_preference(void **state) expect_string(accounts_set_priority_dnd, account_name, "a_account"); expect_value(accounts_set_priority_dnd, value, 10); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_cons_show("Updated dnd priority for account a_account: 10"); expect_cons_show(""); @@ -791,7 +791,7 @@ void cmd_account_set_priority_updates_presence_when_account_connected_with_prese expect_any(accounts_set_priority_online, account_name); expect_any(accounts_set_priority_online, value); - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_any(accounts_get_last_presence, account_name); will_return(accounts_get_last_presence, RESOURCE_ONLINE); @@ -807,7 +807,7 @@ void cmd_account_set_priority_updates_presence_when_account_connected_with_prese will_return(accounts_get_account, account); #endif - will_return(jabber_get_presence_message, "Free to chat"); + will_return(connection_get_presence_msg, "Free to chat"); expect_value(presence_send, status, RESOURCE_ONLINE); expect_string(presence_send, msg, "Free to chat"); diff --git a/tests/unittests/test_cmd_bookmark.c b/tests/unittests/test_cmd_bookmark.c index eafae9b6..49ea7b10 100644 --- a/tests/unittests/test_cmd_bookmark.c +++ b/tests/unittests/test_cmd_bookmark.c @@ -24,7 +24,7 @@ static void test_with_connection_status(jabber_conn_status_t status) { - will_return(jabber_get_connection_status, status); + will_return(connection_get_status, status); expect_cons_show("You are not currently connected."); gboolean result = cmd_bookmark(NULL, CMD_BOOKMARK, NULL); @@ -62,7 +62,7 @@ void cmd_bookmark_shows_usage_when_no_args(void **state) ProfWin window; window.type = WIN_CONSOLE; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(cons_bad_cmd_usage, cmd, CMD_BOOKMARK); @@ -127,7 +127,7 @@ void cmd_bookmark_list_shows_bookmarks(void **state) bookmarks = g_list_append(bookmarks, bm4); bookmarks = g_list_append(bookmarks, bm5); - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); will_return(bookmark_get_list, bookmarks); // TODO - Custom list compare @@ -147,7 +147,7 @@ void cmd_bookmark_add_shows_message_when_invalid_jid(void **state) ProfWin window; window.type = WIN_CONSOLE; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_cons_show("Can't add bookmark with JID 'room'; should be 'room@domain.tld'"); @@ -162,7 +162,7 @@ void cmd_bookmark_add_adds_bookmark_with_jid(void **state) ProfWin window; window.type = WIN_CONSOLE; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(bookmark_add, jid, jid); expect_any(bookmark_add, nick); @@ -184,7 +184,7 @@ void cmd_bookmark_add_adds_bookmark_with_jid_nick(void **state) ProfWin window; window.type = WIN_CONSOLE; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(bookmark_add, jid, jid); expect_string(bookmark_add, nick, nick); @@ -205,7 +205,7 @@ void cmd_bookmark_add_adds_bookmark_with_jid_autojoin(void **state) ProfWin window; window.type = WIN_CONSOLE; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(bookmark_add, jid, jid); expect_any(bookmark_add, nick); @@ -227,7 +227,7 @@ void cmd_bookmark_add_adds_bookmark_with_jid_nick_autojoin(void **state) ProfWin window; window.type = WIN_CONSOLE; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(bookmark_add, jid, jid); expect_string(bookmark_add, nick, nick); @@ -248,7 +248,7 @@ void cmd_bookmark_remove_removes_bookmark(void **state) ProfWin window; window.type = WIN_CONSOLE; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(bookmark_remove, jid, jid); will_return(bookmark_remove, TRUE); @@ -266,7 +266,7 @@ void cmd_bookmark_remove_shows_message_when_no_bookmark(void **state) ProfWin window; window.type = WIN_CONSOLE; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_any(bookmark_remove, jid); will_return(bookmark_remove, FALSE); diff --git a/tests/unittests/test_cmd_connect.c b/tests/unittests/test_cmd_connect.c index 53c4c940..3e592e11 100644 --- a/tests/unittests/test_cmd_connect.c +++ b/tests/unittests/test_cmd_connect.c @@ -18,7 +18,7 @@ static void test_with_connection_status(jabber_conn_status_t status) { - will_return(jabber_get_connection_status, status); + will_return(connection_get_status, status); expect_cons_show("You are either connected already, or a login is in process."); @@ -50,7 +50,7 @@ void cmd_connect_when_no_account(void **state) { gchar *args[] = { "user@server.org", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_string(accounts_get_account, name, "user@server.org"); will_return(accounts_get_account, NULL); @@ -73,7 +73,7 @@ void cmd_connect_fail_message(void **state) { gchar *args[] = { "user@server.org", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_any(accounts_get_account, name); will_return(accounts_get_account, NULL); @@ -98,7 +98,7 @@ void cmd_connect_lowercases_argument(void **state) { gchar *args[] = { "USER@server.ORG", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_string(accounts_get_account, name, "user@server.org"); will_return(accounts_get_account, NULL); @@ -123,7 +123,7 @@ void cmd_connect_asks_password_when_not_in_account(void **state) ProfAccount *account = account_new("jabber_org", "me@jabber.org", NULL, NULL, TRUE, NULL, 0, NULL, NULL, NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_any(accounts_get_account, name); will_return(accounts_get_account, account); @@ -143,7 +143,7 @@ void cmd_connect_shows_usage_when_no_server_value(void **state) { gchar *args[] = { "user@server.org", "server", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_string(cons_bad_cmd_usage, cmd, CMD_CONNECT); expect_cons_show(""); @@ -156,7 +156,7 @@ void cmd_connect_shows_usage_when_server_no_port_value(void **state) { gchar *args[] = { "user@server.org", "server", "aserver", "port", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_string(cons_bad_cmd_usage, cmd, CMD_CONNECT); expect_cons_show(""); @@ -169,7 +169,7 @@ void cmd_connect_shows_usage_when_no_port_value(void **state) { gchar *args[] = { "user@server.org", "port", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_string(cons_bad_cmd_usage, cmd, CMD_CONNECT); expect_cons_show(""); @@ -182,7 +182,7 @@ void cmd_connect_shows_usage_when_port_no_server_value(void **state) { gchar *args[] = { "user@server.org", "port", "5678", "server", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_string(cons_bad_cmd_usage, cmd, CMD_CONNECT); expect_cons_show(""); @@ -195,7 +195,7 @@ void cmd_connect_shows_message_when_port_0(void **state) { gchar *args[] = { "user@server.org", "port", "0", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_cons_show("Value 0 out of range. Must be in 1..65535."); expect_cons_show(""); @@ -208,7 +208,7 @@ void cmd_connect_shows_message_when_port_minus1(void **state) { gchar *args[] = { "user@server.org", "port", "-1", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_cons_show("Value -1 out of range. Must be in 1..65535."); expect_cons_show(""); @@ -221,7 +221,7 @@ void cmd_connect_shows_message_when_port_65536(void **state) { gchar *args[] = { "user@server.org", "port", "65536", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_cons_show("Value 65536 out of range. Must be in 1..65535."); expect_cons_show(""); @@ -234,7 +234,7 @@ void cmd_connect_shows_message_when_port_contains_chars(void **state) { gchar *args[] = { "user@server.org", "port", "52f66", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_cons_show("Could not convert \"52f66\" to a number."); expect_cons_show(""); @@ -247,7 +247,7 @@ void cmd_connect_shows_usage_when_server_provided_twice(void **state) { gchar *args[] = { "user@server.org", "server", "server1", "server", "server2", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_string(cons_bad_cmd_usage, cmd, CMD_CONNECT); expect_cons_show(""); @@ -260,7 +260,7 @@ void cmd_connect_shows_usage_when_port_provided_twice(void **state) { gchar *args[] = { "user@server.org", "port", "1111", "port", "1111", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_string(cons_bad_cmd_usage, cmd, CMD_CONNECT); expect_cons_show(""); @@ -273,7 +273,7 @@ void cmd_connect_shows_usage_when_invalid_first_property(void **state) { gchar *args[] = { "user@server.org", "wrong", "server", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_string(cons_bad_cmd_usage, cmd, CMD_CONNECT); expect_cons_show(""); @@ -286,7 +286,7 @@ void cmd_connect_shows_usage_when_invalid_second_property(void **state) { gchar *args[] = { "user@server.org", "server", "aserver", "wrong", "1234", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_string(cons_bad_cmd_usage, cmd, CMD_CONNECT); expect_cons_show(""); @@ -299,7 +299,7 @@ void cmd_connect_with_server_when_provided(void **state) { gchar *args[] = { "user@server.org", "server", "aserver", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_string(accounts_get_account, name, "user@server.org"); will_return(accounts_get_account, NULL); @@ -322,7 +322,7 @@ void cmd_connect_with_port_when_provided(void **state) { gchar *args[] = { "user@server.org", "port", "5432", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_string(accounts_get_account, name, "user@server.org"); will_return(accounts_get_account, NULL); @@ -345,7 +345,7 @@ void cmd_connect_with_server_and_port_when_provided(void **state) { gchar *args[] = { "user@server.org", "port", "5432", "server", "aserver", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_string(accounts_get_account, name, "user@server.org"); will_return(accounts_get_account, NULL); @@ -370,7 +370,7 @@ void cmd_connect_shows_message_when_connecting_with_account(void **state) ProfAccount *account = account_new("jabber_org", "user@jabber.org", "password", NULL, TRUE, NULL, 0, "laptop", NULL, NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_any(accounts_get_account, name); will_return(accounts_get_account, account); @@ -390,7 +390,7 @@ void cmd_connect_connects_with_account(void **state) ProfAccount *account = account_new("jabber_org", "me@jabber.org", "password", NULL, TRUE, NULL, 0, NULL, NULL, NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_any(accounts_get_account, name); will_return(accounts_get_account, account); diff --git a/tests/unittests/test_cmd_disconnect.c b/tests/unittests/test_cmd_disconnect.c index 90c99b3c..ef66f330 100644 --- a/tests/unittests/test_cmd_disconnect.c +++ b/tests/unittests/test_cmd_disconnect.c @@ -21,7 +21,7 @@ void clears_chat_sessions(void **state) chat_session_recipient_active("bob@server.org", "laptop", FALSE); chat_session_recipient_active("mike@server.org", "work", FALSE); - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); will_return(jabber_get_fulljid, "myjid@myserver.com"); expect_any_cons_show(); diff --git a/tests/unittests/test_cmd_join.c b/tests/unittests/test_cmd_join.c index 668aec5c..f5774237 100644 --- a/tests/unittests/test_cmd_join.c +++ b/tests/unittests/test_cmd_join.c @@ -20,7 +20,7 @@ static void test_with_connection_status(jabber_conn_status_t status) { - will_return(jabber_get_connection_status, status); + will_return(connection_get_status, status); expect_cons_show("You are not currently connected."); @@ -52,7 +52,7 @@ void cmd_join_shows_error_message_when_invalid_room_jid(void **state) { gchar *args[] = { "//@@/", NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_cons_show_error("Specified room has incorrect format."); expect_cons_show(""); @@ -74,7 +74,7 @@ void cmd_join_uses_account_mucservice_when_no_service_specified(void **state) muc_init(); - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); will_return(jabber_get_account_name, account_name); expect_string(accounts_get_account, name, account_name); @@ -99,7 +99,7 @@ void cmd_join_uses_supplied_nick(void **state) muc_init(); - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); will_return(jabber_get_account_name, account_name); expect_string(accounts_get_account, name, account_name); @@ -124,7 +124,7 @@ void cmd_join_uses_account_nick_when_not_supplied(void **state) muc_init(); - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); will_return(jabber_get_account_name, account_name); expect_string(accounts_get_account, name, account_name); @@ -152,7 +152,7 @@ void cmd_join_uses_password_when_supplied(void **state) muc_init(); - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); will_return(jabber_get_account_name, account_name); expect_string(accounts_get_account, name, account_name); diff --git a/tests/unittests/test_cmd_otr.c b/tests/unittests/test_cmd_otr.c index 9790c3da..a78ab942 100644 --- a/tests/unittests/test_cmd_otr.c +++ b/tests/unittests/test_cmd_otr.c @@ -138,7 +138,7 @@ void cmd_otr_gen_shows_message_when_not_connected(void **state) { gchar *args[] = { "gen", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_cons_show("You must be connected with an account to load OTR information."); @@ -150,7 +150,7 @@ static void test_with_command_and_connection_status(char *command, void *cmd_fun { gchar *args[] = { command, NULL }; - will_return(jabber_get_connection_status, status); + will_return(connection_get_status, status); expect_cons_show("You must be connected with an account to load OTR information."); @@ -191,7 +191,7 @@ void cmd_otr_gen_generates_key_for_connected_account(void **state) ProfAccount *account = account_new(account_name, "me@jabber.org", NULL, NULL, TRUE, NULL, 0, NULL, NULL, NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); will_return(jabber_get_account_name, account_name); expect_string(accounts_get_account, name, account_name); @@ -233,7 +233,7 @@ void cmd_otr_myfp_shows_message_when_no_key(void **state) { gchar *args[] = { "myfp", NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); will_return(otr_key_loaded, FALSE); expect_ui_current_print_formatted_line('!', 0, "You have not generated or loaded a private key, use '/otr gen'"); @@ -249,7 +249,7 @@ void cmd_otr_myfp_shows_my_fingerprint(void **state) GString *message = g_string_new("Your OTR fingerprint: "); g_string_append(message, fingerprint); - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); will_return(otr_key_loaded, TRUE); will_return(otr_get_my_fingerprint, strdup(fingerprint)); @@ -268,7 +268,7 @@ test_cmd_otr_theirfp_from_wintype(win_type_t wintype) ProfWin window; window.type = wintype; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_ui_current_print_line("You must be in a regular chat window to view a recipient's fingerprint."); @@ -304,7 +304,7 @@ void cmd_otr_theirfp_shows_message_when_non_otr_chat_window(void **state) chatwin.pgp_send = FALSE; chatwin.is_otr = FALSE; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_ui_current_print_formatted_line('!', 0, "You are not currently in an OTR session."); @@ -331,7 +331,7 @@ void cmd_otr_theirfp_shows_fingerprint(void **state) chatwin.pgp_send = FALSE; chatwin.is_otr = TRUE; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(otr_get_their_fingerprint, recipient, recipient); will_return(otr_get_their_fingerprint, strdup(fingerprint)); @@ -351,7 +351,7 @@ test_cmd_otr_start_from_wintype(win_type_t wintype) ProfWin window; window.type = wintype; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_ui_current_print_line("You must be in a regular chat window to start an OTR session."); @@ -379,7 +379,7 @@ void cmd_otr_start_shows_message_when_already_started(void **state) char *recipient = "someone@server.org"; gchar *args[] = { "start", NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); ProfWin window; window.type = WIN_CHAT; @@ -401,7 +401,7 @@ void cmd_otr_start_shows_message_when_no_key(void **state) char *recipient = "someone@server.org"; gchar *args[] = { "start", NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); will_return(otr_key_loaded, FALSE); ProfWin window; @@ -435,7 +435,7 @@ cmd_otr_start_sends_otr_query_message_to_current_recipeint(void **state) chatwin.pgp_send = FALSE; chatwin.is_otr = FALSE; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); will_return(otr_key_loaded, TRUE); will_return(otr_start_query, query_message); diff --git a/tests/unittests/test_cmd_pgp.c b/tests/unittests/test_cmd_pgp.c index 68d48b0c..ee057018 100644 --- a/tests/unittests/test_cmd_pgp.c +++ b/tests/unittests/test_cmd_pgp.c @@ -32,7 +32,7 @@ void cmd_pgp_start_shows_message_when_connection(jabber_conn_status_t conn_statu ProfWin window; window.type = WIN_CHAT; - will_return(jabber_get_connection_status, conn_status); + will_return(connection_get_status, conn_status); expect_cons_show("You must be connected to start PGP encrpytion."); @@ -71,7 +71,7 @@ void cmd_pgp_start_shows_message_when_no_arg_in_wintype(win_type_t wintype) ProfWin window; window.type = wintype; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_cons_show("You must be in a regular chat window to start PGP encrpytion."); diff --git a/tests/unittests/test_cmd_rooms.c b/tests/unittests/test_cmd_rooms.c index 663073f3..b312f7b3 100644 --- a/tests/unittests/test_cmd_rooms.c +++ b/tests/unittests/test_cmd_rooms.c @@ -18,7 +18,7 @@ static void test_with_connection_status(jabber_conn_status_t status) { - will_return(jabber_get_connection_status, status); + will_return(connection_get_status, status); expect_cons_show("You are not currently connected."); @@ -58,7 +58,7 @@ void cmd_rooms_uses_account_default_when_no_arg(void **state) ProfAccount *account = account_new("testaccount", NULL, NULL, NULL, TRUE, NULL, 0, NULL, NULL, NULL, 0, 0, 0, 0, 0, strdup("default_conf_server"), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); will_return(jabber_get_account_name, "account_name"); expect_any(accounts_get_account, name); will_return(accounts_get_account, account); @@ -73,7 +73,7 @@ void cmd_rooms_arg_used_when_passed(void **state) { gchar *args[] = { "conf_server_arg" }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(iq_room_list_request, conferencejid, "conf_server_arg"); diff --git a/tests/unittests/test_cmd_roster.c b/tests/unittests/test_cmd_roster.c index 054328be..bd624642 100644 --- a/tests/unittests/test_cmd_roster.c +++ b/tests/unittests/test_cmd_roster.c @@ -19,7 +19,7 @@ static void test_with_connection_status(jabber_conn_status_t status) { gchar *args[] = { NULL }; - will_return(jabber_get_connection_status, status); + will_return(connection_get_status, status); expect_cons_show("You are not currently connected."); @@ -51,7 +51,7 @@ void cmd_roster_shows_roster_when_no_args(void **state) { gchar *args[] = { NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); roster_create(); roster_add("bob@server.org", "bob", NULL, "both", FALSE); @@ -69,7 +69,7 @@ void cmd_roster_add_shows_message_when_no_jid(void **state) { gchar *args[] = { "add", NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(cons_bad_cmd_usage, cmd, CMD_ROSTER); @@ -83,7 +83,7 @@ void cmd_roster_add_sends_roster_add_request(void **state) char *nick = "bob"; gchar *args[] = { "add", jid, nick, NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(roster_send_add_new, barejid, jid); expect_string(roster_send_add_new, name, nick); @@ -96,7 +96,7 @@ void cmd_roster_remove_shows_message_when_no_jid(void **state) { gchar *args[] = { "remove", NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(cons_bad_cmd_usage, cmd, CMD_ROSTER); @@ -109,7 +109,7 @@ void cmd_roster_remove_sends_roster_remove_request(void **state) char *jid = "bob@server.org"; gchar *args[] = { "remove", jid, NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(roster_send_remove, barejid, jid); @@ -121,7 +121,7 @@ void cmd_roster_nick_shows_message_when_no_jid(void **state) { gchar *args[] = { "nick", NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(cons_bad_cmd_usage, cmd, CMD_ROSTER); @@ -133,7 +133,7 @@ void cmd_roster_nick_shows_message_when_no_nick(void **state) { gchar *args[] = { "nick", "bob@server.org", NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(cons_bad_cmd_usage, cmd, CMD_ROSTER); @@ -147,7 +147,7 @@ void cmd_roster_nick_shows_message_when_no_contact_exists(void **state) roster_create(); - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_cons_show("Contact not found in roster: bob@server.org"); @@ -168,7 +168,7 @@ void cmd_roster_nick_sends_name_change_request(void **state) groups = g_slist_append(groups, strdup("group1")); roster_add(jid, "bob", groups, "both", FALSE); - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(roster_send_name_change, barejid, jid); expect_string(roster_send_name_change, new_name, nick); @@ -188,7 +188,7 @@ void cmd_roster_clearnick_shows_message_when_no_jid(void **state) { gchar *args[] = { "clearnick", NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(cons_bad_cmd_usage, cmd, CMD_ROSTER); @@ -202,7 +202,7 @@ void cmd_roster_clearnick_shows_message_when_no_contact_exists(void **state) roster_create(); - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_cons_show("Contact not found in roster: bob@server.org"); @@ -222,7 +222,7 @@ void cmd_roster_clearnick_sends_name_change_request_with_empty_nick(void **state groups = g_slist_append(groups, strdup("group1")); roster_add(jid, "bob", groups, "both", FALSE); - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(roster_send_name_change, barejid, jid); expect_value(roster_send_name_change, new_name, NULL); diff --git a/tests/unittests/test_cmd_sub.c b/tests/unittests/test_cmd_sub.c index 62871520..a89e82bf 100644 --- a/tests/unittests/test_cmd_sub.c +++ b/tests/unittests/test_cmd_sub.c @@ -19,7 +19,7 @@ void cmd_sub_shows_message_when_not_connected(void **state) { gchar *args[] = { NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + will_return(connection_get_status, JABBER_DISCONNECTED); expect_cons_show("You are currently not connected."); @@ -31,7 +31,7 @@ void cmd_sub_shows_usage_when_no_arg(void **state) { gchar *args[] = { NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + will_return(connection_get_status, JABBER_CONNECTED); expect_string(cons_bad_cmd_usage, cmd, CMD_SUB); diff --git a/tests/unittests/xmpp/stub_xmpp.c b/tests/unittests/xmpp/stub_xmpp.c index fef17bf6..7b49fdc6 100644 --- a/tests/unittests/xmpp/stub_xmpp.c +++ b/tests/unittests/xmpp/stub_xmpp.c @@ -44,12 +44,12 @@ char* jabber_create_uuid(void) void jabber_free_uuid(char * uuid) {} -jabber_conn_status_t jabber_get_connection_status(void) +jabber_conn_status_t connection_get_status(void) { return (jabber_conn_status_t)mock(); } -char* jabber_get_presence_message(void) +char* connection_get_presence_msg(void) { return (char*)mock(); }