purple-mattermost
purple-mattermost copied to clipboard
segfault on muc join
I am using Arch Linux and following versions:
spectrum2 2.0.3-5 libpurple 2.12.0-2 purple-mattermost-git v1.1.r89.g4524538-1
Private messages looks working but transport segfaults on MUC join:
(I've tried to use name as an id but it is also NULL, line 4011 is mine but result is the same on original sources)
(gdb) bt
#0 0x00007fbf7bbfcf30 in g_str_hash () at /usr/lib/libglib-2.0.so.0
#1 0x00007fbf696676c1 in mm_join_chat (pc=0x9fa3482b90, chatdata=Python Exception <class 'gdb.error'> There is no member named keys.:
0x9fa3462910) at libmattermost.c:4012
#2 0x0000009fa1c1b0e7 in SpectrumNetworkPlugin::handleJoinRoomRequest(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
#3 0x00007fbf7b7347c5 in Transport::NetworkPlugin::handleJoinRoomPayload(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () at /usr/lib/libtransport-plugin.so.2.0
#4 0x00007fbf7b73536b in Transport::NetworkPlugin::handleDataRead(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) () at /usr/lib/libtransport-plugin.so.2.0
#5 0x0000009fa1c13169 in ()
#6 0x0000009fa1c07293 in ()
#7 0x00007fbf7bc0d8c5 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#8 0x00007fbf7bc0dc88 in () at /usr/lib/libglib-2.0.so.0
#9 0x00007fbf7bc0dfa2 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#10 0x0000009fa1c136be in main ()
(gdb) l
1 <built-in>: No such file or directory.
(gdb) up
#1 0x00007fbf696676c1 in mm_join_chat (pc=0x9fa3482b90, Python Exception <class 'gdb.error'> There is no member named keys.:
chatdata=0x9fa3462910) at libmattermost.c:4012
4012 PurpleChatConversation *chatconv = purple_conversations_find_chat(ma->pc, g_str_hash(id));
(gdb) l
4007 MattermostAccount *ma = purple_connection_get_protocol_data(pc);
4008 const gchar *id = g_hash_table_lookup(chatdata, "id");
4009 const gchar *name = g_hash_table_lookup(chatdata, "name");
4010 const gchar *team_id = g_hash_table_lookup(chatdata, "team_id");
4011 if(id == NULL) id = name;
4012 PurpleChatConversation *chatconv = purple_conversations_find_chat(ma->pc, g_str_hash(id));
4013
4014 if (chatconv != NULL && !purple_chat_conversation_has_left(chatconv)) {
4015 purple_conversation_present(PURPLE_CONVERSATION(chatconv));
4016 return;
(gdb) p id
$1 = (const gchar *) 0x0
(gdb) p name
$2 = (const gchar *) 0x0
(gdb) p chatdata
$3 = 0x9fa3462910Python Exception <class 'gdb.error'> There is no member named keys.:
(gdb) p team_id
$4 = (const gchar *) 0x9fa3462a70 "off-topic"
PS: It was from spectrum2 transport From pidgin MUC looks working
Latest (2683ee186f7b5186be6c604f0a2ccf32afa66448) does not segfault but it looks like that this plugin does not work with spectrum2. When I join channel it passes just channel name. Then it fails to split it in mm_chat_info_defaults() using channel name as team-id.
May be it is because of only roomlist information passed up and only roomlist info can be used by xmpp clients.