Modify

#1247 closed defect (fixed)

Bitlbee WHO doesn't report account away status, breaks Quassel away-on-detach

Reported by: digitalcircuit Owned by:
Priority: minor Milestone:
Component: IRC Version: 3.4.1
Keywords: Cc:
IRC client+version: Client-independent Operating System: Linux
OS version/distro: Ubuntu 16.04 LTS

Description

When sending WHO replies Bitlbee does not check the away settings for the local IRC user. If I set myself as /away, any future replies will wrongly tell the IRC client that I'm not away. See irc_send_who in irc_send.c, line 306

This breaks Quassel IRC's "auto-away on detach" functionality. The Quassel core (bouncer) sets /away when the client disconnects, but whenever a WHO reply is received indicating the account nick is no longer away (H instead of G), the core assumes Bitlbee cleared the away status. As a result, the Quassel core won't send the appropriate AWAY\r\n upon reattaching the client. See Quassel coresessioneventprocessor.cpp, line 766

Perhaps use a form of set_getstr(&irc->b->set, "away", away) to check what's set by irc_cmd_away in irc_commands.c, line 731?

strace output of Bitlbee (strace -e write,read -p $BITLBEE_PID -t -s 400):

16:12:36 read(11, "AWAY :I'm here, just testing Bitlbee\r\n", 512) = 38
16:12:36 write(11, ":localhost 306 digitalcircuit :You're now away: I'm here, just testing Bitlbee\r\n", 76) = 76
16:13:30 read(11, "WHO &bitlbee\r\n", 512) = 33
16:13:30 write(11, ":localhost 352 digitalcircuit &bitlbee quassel localhost localhost digitalcircuit H :0 Digital\r\n:localhost 352 digitalcircuit &bitlbee root localhost localhost root H :0 User manager\r\n:localhost 315 digitalcircuit &bitlbee :End of /WHO list\r\n", 454) = 454

expected reply (G not H):

16:13:30 write(11, ":localhost 352 digitalcircuit &bitlbee quassel localhost localhost digitalcircuit G :0 Digital\r\n:localhost 352 digitalcircuit &bitlbee root localhost localhost root H :0 User manager\r\n:localhost 315 digitalcircuit &bitlbee :End of /WHO list\r\n", 454) = 454

Attachments (0)

Change History (4)

comment:1 Changed at 2016-01-31T23:45:16Z by dx

Are you using 3.4.1 as you indicated in the version field, or git master? Because the line you highlighted there wasn't in 3.4.1.

comment:2 Changed at 2016-02-01T00:21:28Z by digitalcircuit

Ack, my bad - I was using 3.4.1, but referencing the source code from git master.

As requested on IRC, I retested with the latest git master nightly Ubuntu package (2015-12-6, for some reason nothing later is available), and the issue persists.

comment:3 Changed at 2016-02-01T05:26:37Z by digitalcircuit

I think I've found and fixed the problem, so I've put up a pull request on Github. If there's anything amiss, I'll try to amend it.

comment:4 Changed at 2016-02-02T17:15:54Z by dx

Resolution: fixed
Status: newclosed

That was merged and this is fixed.

Modify Ticket

Action
as closed The ticket will remain with no owner.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.