Hello community, here is the log from the commit of package purple-rocketchat for openSUSE:Factory checked in at 2019-03-10 09:37:09 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/purple-rocketchat (Old) and /work/SRC/openSUSE:Factory/.purple-rocketchat.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "purple-rocketchat" Sun Mar 10 09:37:09 2019 rev:4 rq:682600 version:0.0+hg20190218 Changes: -------- --- /work/SRC/openSUSE:Factory/purple-rocketchat/purple-rocketchat.changes 2019-02-27 15:06:23.954442437 +0100 +++ /work/SRC/openSUSE:Factory/.purple-rocketchat.new.28833/purple-rocketchat.changes 2019-03-10 09:37:13.604149640 +0100 @@ -1,0 +2,13 @@ +Tue Mar 5 15:19:33 UTC 2019 - [email protected] + +- Update to version 0.0+hg20190218 (changes since 0.0+hg20181203): + * Add some additional null checks to fix segfault when adding new + rocketchat server. + * librocketchat: Avoid NULL pointer assertions. + * librocketchat: Remove unneded call for group creation. + * librocketchat: Add default group configuration. + * Disconnect the account if the SSL cert was invalid. + * Fix for segfault when trying to remove an invalid username from + storage. + +------------------------------------------------------------------- Old: ---- purple-rocketchat-0.0+hg20181203.tar.xz New: ---- purple-rocketchat-0.0+hg20190218.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ purple-rocketchat.spec ++++++ --- /var/tmp/diff_new_pack.h1Crbx/_old 2019-03-10 09:37:14.088149524 +0100 +++ /var/tmp/diff_new_pack.h1Crbx/_new 2019-03-10 09:37:14.092149523 +0100 @@ -1,7 +1,7 @@ # # spec file for package purple-rocketchat # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,16 +18,13 @@ %define _name rocketchat Name: purple-rocketchat -Version: 0.0+hg20181203 +Version: 0.0+hg20190218 Release: 0 Summary: RocketChat protocol plugin for libpurple License: GPL-2.0-or-later Group: Productivity/Networking/Instant Messenger URL: https://bitbucket.org/EionRobb/purple-rocketchat Source: %{name}-%{version}.tar.xz -BuildRequires: autoconf -BuildRequires: automake -BuildRequires: libtool BuildRequires: pkgconfig BuildRequires: pkgconfig(glib-2.0) >= 2.28.0 BuildRequires: pkgconfig(json-glib-1.0) ++++++ _service ++++++ --- /var/tmp/diff_new_pack.h1Crbx/_old 2019-03-10 09:37:14.112149519 +0100 +++ /var/tmp/diff_new_pack.h1Crbx/_new 2019-03-10 09:37:14.112149519 +0100 @@ -4,7 +4,7 @@ <param name="url">https://bitbucket.org/EionRobb/purple-rocketchat</param> <param name="filename">purple-rocketchat</param> <param name="versionformat">0.0+hg{date|localdate|shortdate}</param> - <param name="revision">49c17757de34ddbb564b475150ad070d7b0ba1cc</param> + <param name="revision">cb171c8e78b92d71a738460dbc21ec4555d26f21</param> </service> <service mode="disabled" name="recompress"> <param name="file">*.tar</param> ++++++ purple-rocketchat-0.0+hg20181203.tar.xz -> purple-rocketchat-0.0+hg20190218.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purple-rocketchat-0.0+hg20181203/librocketchat.c new/purple-rocketchat-0.0+hg20190218/librocketchat.c --- old/purple-rocketchat-0.0+hg20181203/librocketchat.c 2018-12-02 22:24:27.000000000 +0100 +++ new/purple-rocketchat-0.0+hg20190218/librocketchat.c 2019-02-18 19:17:59.000000000 +0100 @@ -136,8 +136,11 @@ #define PurpleProtocolChatEntry struct proto_chat_entry #define PurpleChatConversation PurpleConvChat #define PurpleIMConversation PurpleConvIm -#define purple_conversations_find_chat_with_account(id, account) \ - PURPLE_CONV_CHAT(purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, id, account)) +static inline PurpleConvChat * purple_conversations_find_chat_with_account(const char * name, const PurpleAccount * account) +{ + PurpleConversation * conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, name, account); + return conv == NULL ? NULL : PURPLE_CONV_CHAT(conv); +} #define purple_chat_conversation_has_left purple_conv_chat_has_left #define PurpleConversationUpdateType PurpleConvUpdateType #define PURPLE_CONVERSATION_UPDATE_UNSEEN PURPLE_CONV_UPDATE_UNSEEN @@ -980,9 +983,13 @@ const gchar *topic = json_object_get_string_member(room_info, "topic"); const gchar *room_name = json_object_get_string_member(room_info, "name"); const gchar *room_id = json_object_get_string_member(room_info, "_id"); - PurpleChatConversation *chatconv = purple_conversations_find_chat_with_account(room_name, ya->account); + PurpleChatConversation *chatconv = NULL; - if (chatconv == NULL) { + if (room_name != NULL) { + purple_conversations_find_chat_with_account(room_name, ya->account); + } + + if (chatconv == NULL && room_id != NULL) { chatconv = purple_conversations_find_chat_with_account(room_id, ya->account); } @@ -992,8 +999,10 @@ g_free(html_topic); } - g_hash_table_replace(ya->group_chats, g_strdup(room_id), g_strdup(room_name)); - g_hash_table_replace(ya->group_chats_rev, g_strdup(room_name), g_strdup(room_id)); + if (room_id != NULL && room_name != NULL) { + g_hash_table_replace(ya->group_chats, g_strdup(room_id), g_strdup(room_name)); + g_hash_table_replace(ya->group_chats_rev, g_strdup(room_name), g_strdup(room_id)); + } } } } @@ -1390,7 +1399,7 @@ void rc_handle_add_new_user(RocketChatAccount *ya, JsonObject *obj); -PurpleGroup* rc_get_or_create_default_group(); +PurpleGroup* rc_get_or_create_default_group(PurpleAccount *account); static void rc_process_msg(RocketChatAccount *ya, JsonNode *element_node) @@ -1401,7 +1410,6 @@ const gchar *msg = json_object_get_string_member(obj, "msg"); // gint64 createdTime = json_object_get_int_member(obj, "createdTime"); // gboolean old_event = !ya->sync_complete; - rc_get_or_create_default_group(); if (purple_strequal(msg, "ping")) { response = json_object_new(); @@ -1596,9 +1604,9 @@ if (username != NULL) { purple_protocol_got_user_status(ya->account, username, "offline", NULL); + g_hash_table_remove(ya->usernames_to_ids, username); } - g_hash_table_remove(ya->usernames_to_ids, username); g_hash_table_remove(ya->ids_to_usernames, user_id); } @@ -1670,13 +1678,14 @@ } } -PurpleGroup* rc_get_or_create_default_group() { +PurpleGroup* rc_get_or_create_default_group(PurpleAccount *account) { PurpleGroup *rc_group = NULL; - rc_group = purple_blist_find_group(_("Rocket.Chat")); + gchar const * const group_name = purple_account_get_string(account, "default-buddy-group", _("Rocket.Chat")); + rc_group = purple_blist_find_group(group_name); if (!rc_group) { - rc_group = purple_group_new(_("Rocket.Chat")); + rc_group = purple_group_new(group_name); purple_blist_add_group(rc_group, NULL); } @@ -1685,7 +1694,7 @@ void rc_handle_add_new_user(RocketChatAccount *ya, JsonObject *obj) { PurpleAccount* account = ya->account; - PurpleGroup *defaultGroup = rc_get_or_create_default_group(); + PurpleGroup *defaultGroup = rc_get_or_create_default_group(account); // a["{\"msg\":\"added\",\"collection\":\"users\",\"id\":\"hZKg86uJavE6jYLya\",\"fields\":{\"emails\":[{\"address\":\"[email protected]\",\"verified\":true}],\"username\":\"eionrobb\"}}"] @@ -2420,6 +2429,11 @@ ya->websocket = NULL; ya->websocket_header_received = FALSE; + if (errortype == PURPLE_SSL_CERTIFICATE_INVALID) { + purple_connection_ssl_error(ya->pc, errortype); + return; + } + rc_restart_channel(ya); } @@ -2583,7 +2597,7 @@ //Text Sun Oct 23 00:08:23 NZDT 2016 Sun Oct 23 00:08:23 NZDT 2016 a["{\"msg\":\"result\",\"id\":\"15\",\"result\":{\"total\":84776,\"records\":[\"dominico\",\"sri.sri\",\"jacob.brush\",\"sergey-4\",\"joycebabu\",\"vongomben\",\"marina.belobrova\",\"maialen\",\"Guby\",\"kawa.mj\",\"abda\",\"allie.micka\",\"julien.dussart\",\"dkonn\",\"sasaki\",\"hiro-21\",\"cristian.florescu\",\"test1-17\",\"artkill\",\"rocket.cat\",\"gabba\",\"ouaise.abdel.razig\",\"linsk\",\"minh.tri\",\"shabu.ans\",\"daniel.summers\",\"elmor3no\",\"woody.lee\",\"nikoj.ne\",\"mael.lebastard\",\"Solange\",\"ramin\",\"singli\",\"sandra.brown\",\"touqeer.rao-CN\",\"shoukri\",\"lintt\",\"wim.stalmans\",\"john.bowles\",\"jeff.lindesmith\",\"div\",\"timotz\",\"maxime.chauvin\",\"natalia.chalovskaya\",\"mark.webb\",\"demik\",\"nshevate\",\"Team.GrossGerau\",\"eionrobb\",\"danish.soomro\",\"jeremy\",\"testing-33\",\"anwar.hakimi\",\"ldk\",\"stoccafisso\",\"mark.petersen\",\"yang-2\",\"yanis.abib\",\"alan.swan\",\"continuouslee\",\"aj2\",\"rebecca.thomson\",\"yuukan\",\"Snare\",\"kidatti\",\"jader\",\"gkarmas\",\"treym\",\"testDemoS\",\"hubot\",\"rivkah\",\"xenithorb\",\"greg-9\",\"kirby\",\"Olu1\",\"gayle.sabharwal\",\"dale.berger\",\"_\",\"systrace68\",\"amir-3\",\"matyee\",\"any2names\",\"craig.miller\",\"aviner.fishhof\",\"jacobroecker\",\"kevmonzon\",\"john.maharjan\",\"ian-42\",\"nazarov.aleksandr\",\"dave-18\",\"ddd-9\",\"ycq818\",\"ParineyPrinja\",\"mongoose\",\"tenks\",\"thangnc\",\"jamesbaek\",\"BaekWoosok\",\"onlyxool\",\"richardt.steil\",\"FrancescoL\",\"eugene.ferbruarie_Mousten\",\"bill-15\",\"daira\",\"stefana1\",\"jack.terrible\",\"joon626\",\"novy\",\"liyu0013\",\"munzy\",\"chuckbot\",\"hogg\",\"rolanx\",\"lokitoxic\",\"diogenes.alves.oliveira\",\"test.yeah.yeah\",\"Erikxxon\",\"heyrob\",\"mark.yardly\",\"romio.montas\",\"james.thomas\",\"thebelgarion\",\"art-1\",\"ys-1\",\"adry2k\",\"Petersch\",\"johannes57\"]}}"] - PurpleChatConversation *chatconv = purple_conversations_find_chat_with_account(room_name, ya->account); + PurpleChatConversation *chatconv = room_name == NULL ? NULL : purple_conversations_find_chat_with_account(room_name, ya->account); if (node == NULL) { // Older server without support for getUsersOfRoom @@ -3429,6 +3443,9 @@ option = purple_account_option_bool_new(N_("Auto-add buddies to the buddy list"), "auto-add-buddy", FALSE); account_options = g_list_append(account_options, option); + option = purple_account_option_string_new(N_("Default group"), "default-buddy-group", _("Rocket.Chat")); + account_options = g_list_append(account_options, option); + option = purple_account_option_string_new(N_("Personal Access Token"), "personal_access_token", ""); account_options = g_list_append(account_options, option);
