bitlbee-steam icon indicating copy to clipboard operation
bitlbee-steam copied to clipboard

Receiving duplicate messages

Open Fyren opened this issue 5 years ago • 4 comments

Within the last couple weeks, I've sometimes been getting duplicates of received messages. In my IRC client, it looks like this:

13:15:00 <User> funny
13:59:56 <User> [13:15:00] funny
22:50:32 <User> i finally got kqb
10:27:38 <User> [2019-06-08 22:50:31] i finally got kqb

Sometimes they involve multiple messages. It's never happened in a situation where I've replied, so a wild guess would be that it's Steam providing past messages for showing history. My bitlbee status channel doesn't say I reconnected to Steam between the duplicates, though. Maybe it has to do with my actual Steam client reconnecting to chat.

Running BITLBEE_DEBUG_STEAM=1 bitlbee -Dn seems to make bitlbee segfault for me, so I don't have any debug info.

Fyren avatar Jun 17 '19 20:06 Fyren

Try adding BITLBEE_DEBUG=1 to that

(i guess that's an old bitlbee-libpurple?)

dequis avatar Jun 17 '19 21:06 dequis

Adding that to my env seems to stop bitlbee from segfaulting, so I'll see if get anything interesting when it happens again.

I'm running my own compile of bitlbee 3.5.1, which is old, but I didn't configure with --purple=1.

Fyren avatar Jun 17 '19 21:06 Fyren

Here's a rough description of what I see in my logs:

Wed, 19 Jun 2019 20:21:26 GMT POST /ISteamWebUserPresenceOAuth/Poll/v0001 returns 200, good response
Wed, 19 Jun 2019 20:21:26 GMT GET /ISteamUserOAuth/GetUserSummaries/v0001 returns 200, good response

But the next few time out or error:

Wed, 19 Jun 2019 20:21:56 GMT POST /ISteamWebUserPresenceOAuth/Poll/v0001 returns 200, body {"pollid":0,"sectimeout":30,"error":"Timeout"}
Wed, 19 Jun 2019 20:22:26 GTM POST /ISteamWebUserPresenceOAuth/Poll/v0001 returns 200, body {"pollid":0,"sectimeout":30,"error":"Timeout"}
Wed, 19 Jun 2019 20:22:46 GMT POST /ISteamWebUserPresenceOAuth/Poll/v0001 returns 500
Wed, 19 Jun 2019 20:22:49 GMT POST /ISteamWebUserPresenceOAuth/Poll/v0001 returns 200, {"pollid":0,"sectimeout":1,"error":"Not Logged On"}

At this point it relogs successfully. When it does a GET /IFriendMessagesService/GetActiveMessageSessions/v0001, inside the response data I see this: {"accountid_friend":snip,"last_message":1560907038,"last_view":1560906384,"unread_message_count":15}. If I look at the official Steam client, I also see 15 unread messages from that user. I did see those messages earlier in bitlbee, but I didn't respond to them.

It does a GET /IFriendMessagesService/GetRecentMessages/v0001 and in that response I see the repeated messages: {"response":{"messages":[{"accountid":snip,"timestamp":1560907038,"message":"something I already received"},<more messages from earlier>.... If I search for that timestamp, I see the same message as part of a poll response from before when I first received it.

So it is reconnecting, it just doesn't report it in the status channel. I don't see a way to match up the resent messages except by comparing the timestamp and text. I don't know if there's a way to respond to receiving them in the first place so they don't count as unread, but I know nothing of the protocol and it seems to not be documented?

Fyren avatar Jun 20 '19 05:06 Fyren

Seeing this too.

kantlivelong avatar Jul 13 '19 21:07 kantlivelong