Modify ↓
Opened at 2016-01-24T14:56:42Z
#1246 new defect
Unnecessary 403 "No such channel" error after /part-ing channels manually
Reported by: | dx | Owned by: | |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | IRC | Version: | Unspecified |
Keywords: | Cc: | ||
IRC client+version: | Client-independent | Operating System: | Linux |
OS version/distro: |
Description
Hello future-dx, take care of this.
To reproduce:
- Join groupchat
- Leave groupchat from irc client.
- See status window or rawlog.
What happens:
/part
removes the user from the channel firstimcb_chat_remove_buddy
(from the jabber presence response) tries to remove it again and fails silentlyimcb_chat_free
(also from the presence response), tries again withIRC_CDU_KICK
, message "Chatroom closed by server", which is interpreted as a channel join error
Breakpoint 3, irc_channel_del_user (ic=0x558d1dc195a0, iu=0x558d1d787340, type=IRC_CDU_PART, msg=0x0) at irc_channel.c:263 263 if (!(icu = irc_channel_has_user(ic, iu))) { (rr) bt #0 irc_channel_del_user (ic=0x558d1dc195a0, iu=0x558d1d787340, type=IRC_CDU_PART, msg=0x0) at irc_channel.c:263 #1 0x0000558d1aec848d in irc_cmd_part (irc=0x558d1d7442a0, cmd=0x558d1d744710) at irc_commands.c:332 #2 0x0000558d1aec4782 in irc_exec (irc=0x558d1d7442a0, cmd=0x558d1d744710) at irc_commands.c:878 #3 0x0000558d1ae8ed9d in irc_process (irc=0x558d1d7442a0) at irc.c:398 #4 0x0000558d1ae67d2f in bitlbee_io_current_client_read (data=0x558d1d7442a0, fd=10, cond=B_EV_IO_READ) at bitlbee.c:213 #5 0x0000558d1af2690c in gaim_io_invoke (source=0x558d1d746d40, condition=G_IO_IN, data=0x558d1d730fe0) at events_glib.c:86 #6 0x00007f76f382ae8f in g_main_dispatch (context=0x558d1d7405f0) at gmain.c:3154 #7 0x00007f76f382bdc6 in g_main_context_dispatch (context=0x558d1d7405f0) at gmain.c:3769 #8 0x00007f76f382bfca in g_main_context_iterate (context=0x558d1d7405f0, block=1, dispatch=1, self=0x558d1d744e00) at gmain.c:3840 #9 0x00007f76f382c46a in g_main_loop_run (loop=0x558d1d71b7a0) at gmain.c:4034 #10 0x0000558d1af26430 in b_main_run () at events_glib.c:59 #11 0x0000558d1af1747f in main (argc=2, argv=0x7fff6bc750d8) at unix.c:172 (rr) c Continuing. Breakpoint 3, irc_channel_del_user (ic=0x558d1dc195a0, iu=0x558d1d787340, type=IRC_CDU_PART, msg=0x0) at irc_channel.c:263 263 if (!(icu = irc_channel_has_user(ic, iu))) { (rr) bt #0 irc_channel_del_user (ic=0x558d1dc195a0, iu=0x558d1d787340, type=IRC_CDU_PART, msg=0x0) at irc_channel.c:263 #1 0x0000558d1aea64de in bee_irc_chat_remove_user (bee=0x558d1d743f10, c=0x558d1dc21610, bu=0x558d1d730120, reason=0x0) at irc_im.c:702 #2 0x0000558d1af7f846 in imcb_chat_remove_buddy (c=0x558d1dc21610, handle=0x558d1dc229b0 "test1@localhost", reason=0x0) at bee_chat.c:231 #3 0x0000558d1afc5fc4 in jabber_chat_pkt_presence (ic=0x558d1d7873d0, bud=0x558d1dc20db0, node=0x558d1d7444e0) at conference.c:394 #4 0x0000558d1aff6992 in jabber_pkt_presence (node=0x558d1d7444e0, data=0x558d1d7873d0) at presence.c:110 #5 0x0000558d1af68215 in xt_handle (xt=0x558d1d7859d0, node=0x558d1d7444e0, depth=0) at xmltree.c:195 #6 0x0000558d1af66fc1 in xt_handle (xt=0x558d1d7859d0, node=0x558d1dc14500, depth=1) at xmltree.c:174 #7 0x0000558d1af66e7a in xt_handle (xt=0x558d1d7859d0, node=0x0, depth=1) at xmltree.c:169 #8 0x0000558d1afcf1ea in jabber_feed_input (ic=0x558d1d7873d0, buf=0x7fff6bc747e0 "<presence type='unavailable' to='test1@localhost/BitlBee' from='#muc1@muc.localhost/test1@localhost/d360b57a-d8c9-4c5e-9e9f-dd110170cabf'><x xmlns='http://jabber.org/protocol/muc#user'><item affiliation='none' role='none'/><status code='110'/></x></presence>\307k\377\177", size=258) at io.c:167 #9 0x0000558d1afcaf1f in jabber_read_callback (data=0x558d1d7873d0, fd=11, cond=B_EV_IO_READ) at io.c:237 #10 0x0000558d1af2690c in gaim_io_invoke (source=0x558d1dc15f40, condition=G_IO_IN, data=0x558d1d72d9d0) at events_glib.c:86 #11 0x00007f76f382ae8f in g_main_dispatch (context=0x558d1d7405f0) at gmain.c:3154 #12 0x00007f76f382bdc6 in g_main_context_dispatch (context=0x558d1d7405f0) at gmain.c:3769 #13 0x00007f76f382bfca in g_main_context_iterate (context=0x558d1d7405f0, block=1, dispatch=1, self=0x558d1d744e00) at gmain.c:3840 #14 0x00007f76f382c46a in g_main_loop_run (loop=0x558d1d71b7a0) at gmain.c:4034 #15 0x0000558d1af26430 in b_main_run () at events_glib.c:59 #16 0x0000558d1af1747f in main (argc=2, argv=0x7fff6bc750d8) at unix.c:172 (rr) c Continuing. Breakpoint 3, irc_channel_del_user (ic=0x558d1dc195a0, iu=0x558d1d787340, type=IRC_CDU_KICK, msg=0x558d1b14b699 "Chatroom closed by server") at irc_channel.c:263 263 if (!(icu = irc_channel_has_user(ic, iu))) { (rr) bt #0 irc_channel_del_user (ic=0x558d1dc195a0, iu=0x558d1d787340, type=IRC_CDU_KICK, msg=0x558d1b14b699 "Chatroom closed by server") at irc_channel.c:263 #1 0x0000558d1aea56bd in bee_irc_chat_free (bee=0x558d1d743f10, c=0x558d1dc21610) at irc_im.c:635 #2 0x0000558d1af7c0f5 in imcb_chat_free (c=0x558d1dc21610) at bee_chat.c:72 #3 0x0000558d1afc28ae in jabber_chat_free (c=0x558d1dc21610) at conference.c:169 #4 0x0000558d1afc6384 in jabber_chat_pkt_presence (ic=0x558d1d7873d0, bud=0x558d1dc20db0, node=0x558d1d7444e0) at conference.c:406 #5 0x0000558d1aff6992 in jabber_pkt_presence (node=0x558d1d7444e0, data=0x558d1d7873d0) at presence.c:110 #6 0x0000558d1af68215 in xt_handle (xt=0x558d1d7859d0, node=0x558d1d7444e0, depth=0) at xmltree.c:195 #7 0x0000558d1af66fc1 in xt_handle (xt=0x558d1d7859d0, node=0x558d1dc14500, depth=1) at xmltree.c:174 #8 0x0000558d1af66e7a in xt_handle (xt=0x558d1d7859d0, node=0x0, depth=1) at xmltree.c:169 #9 0x0000558d1afcf1ea in jabber_feed_input (ic=0x558d1d7873d0, buf=0x7fff6bc747e0 "<presence type='unavailable' to='test1@localhost/BitlBee' from='#muc1@muc.localhost/test1@localhost/d360b57a-d8c9-4c5e-9e9f-dd110170cabf'><x xmlns='http://jabber.org/protocol/muc#user'><item affiliation='none' role='none'/><status code='110'/></x></presence>\307k\377\177", size=258) at io.c:167 #10 0x0000558d1afcaf1f in jabber_read_callback (data=0x558d1d7873d0, fd=11, cond=B_EV_IO_READ) at io.c:237 #11 0x0000558d1af2690c in gaim_io_invoke (source=0x558d1dc15f40, condition=G_IO_IN, data=0x558d1d72d9d0) at events_glib.c:86 #12 0x00007f76f382ae8f in g_main_dispatch (context=0x558d1d7405f0) at gmain.c:3154 #13 0x00007f76f382bdc6 in g_main_context_dispatch (context=0x558d1d7405f0) at gmain.c:3769 #14 0x00007f76f382bfca in g_main_context_iterate (context=0x558d1d7405f0, block=1, dispatch=1, self=0x558d1d744e00) at gmain.c:3840 #15 0x00007f76f382c46a in g_main_loop_run (loop=0x558d1d71b7a0) at gmain.c:4034 #16 0x0000558d1af26430 in b_main_run () at events_glib.c:59 #17 0x0000558d1af1747f in main (argc=2, argv=0x7fff6bc750d8) at unix.c:172
Blame d088ee8bc50cfe13130da745791f533705acd35e
259 int irc_channel_del_user(irc_channel_t *ic, irc_user_t *iu, irc_channel_del_user_type_t type, const char *msg) 260 { 261 irc_channel_user_t *icu; 262 263 if (!(icu = irc_channel_has_user(ic, iu))) { 264 if (iu == ic->irc->user && type == IRC_CDU_KICK) { 265 /* an error happened before joining, inform the client with a numeric */ 266 irc_send_num(ic->irc, 403, "%s :Error joining channel (check control channel?)", ic->name); 267 } 268 return 0; 269 }
Good luck.
Attachments (0)
Note: See
TracTickets for help on using
tickets.