meebey / smuxi

Smuxi is an user-friendly and free IRC client for Linux, Windows and Mac OS X based on GNOME / GTK+
https://smuxi.im/
GNU General Public License v2.0
171 stars 46 forks source link

Duplicate messages in google hangout #198

Open therebelrobot opened 9 years ago

therebelrobot commented 9 years ago

Connected to Google hangouts via XMPP, and am getting duplicate messages sent from the client to google. I saw #103, but I'm not sure if that's the same issue and/or if that fix has been rolled out for update yet.

OS: Ubuntu 14.04 Vendor: Debian 0.11~rc5-1 Frontend: GNOME 0.11.0.0 Engine: 0.11.0.0

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/7138978-duplicate-messages-in-google-hangout?utm_campaign=plugin&utm_content=tracker%2F277125&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F277125&utm_medium=issues&utm_source=github).
rodoviario commented 8 years ago

Affects me too. I'm getting 4 times each message.

meebey commented 8 years ago

Can you please Start Smuxi with debugging enabled using this command: smuxi-frontend-gnome -d Then the Server chat of gTalk will show raw XMPP messages. Please copy the duplicate messages from it to here.

rodoviario commented 8 years ago

Did many tries. The events from -d are so fast, that when I try to select and copy, they are allready gone at the top of the scrolling capabilities of my terminal. Also tried smuxi-frontend-gnome -d > smuxilog.log, but it creates the same 1.5 mb file all the times, with old messages on it. It does not capture my testings chats.

I can see in the terminal de XMPP messages appear (very fast) and go up the screen, but if I move the smuxi window, or change focus, there are so many new messages, that I lost the ones required again.

I will try to configure the terminal emulator to capture all the session and report back, but if you now a way to correctly capture all the output to a file, it will be much more easy for me to find the xmpp chat lines.

Thanks

meebey commented 8 years ago

The protocol debug only happens in the server chat, not in the debug log on stdout. You can increase the amount of retained messages in preferences: Interface -> General -> Buffer Lines, set that to 1000 for example. What I wonder is, new messages should always be visible in the protocol debug in the server chat and only move out of the visible chat buffer if it too many new messages arrive, but when you say duplicates I assume it means a single message duplicated a few times...

rodoviario commented 8 years ago

Thanks for the stdout clarification. I will increase the buffer size as soon as I get to my office. I do mean duplicate (4 times) chat entries. I chat to my wife, she uses directly the gmail interface to hangouts, in chrome browser. If I say hello to her, it arrives 4 times (to her). Every line of chat is multiplied by 4. If I check my android phone, when it gets in sync, I can see also the 4 entries. But in the smuxi interface I only see one line when I press enter, and of course, the answers from my wife are one line only too. I will report later, hopefully with the XMPP entries from the terminal windows copied here.

rodoviario commented 8 years ago

Here it is... found it in the terminal buffer

2015-10-06 07:46:57,521 [Main] DEBUG TRACE - [smuxi-engine.dll] CommandModel..ctor(fm = Smuxi.Engine.FrontendManager, chat = 'Smuxi.Engine.PersonChatModel', cmdChar = '/', data = 'probando a ver si repite 4 veces')
2015-10-06 07:46:57,521 [Main] DEBUG TRACE - [smuxi-frontend.dll] CommandManager.Execute(cmd = <probando a ver si repite 4 veces>)
2015-10-06 07:46:57,521 [Main] DEBUG Smuxi.Frontend.Gnome.Entry - added: 'probando a ver si repite 4 veces' to history
2015-10-06 07:46:57,521 [CommandManager] DEBUG TRACE - [smuxi-frontend.dll] CommandManager.DoExecute(cmd = <probando a ver si repite 4 veces>)
2015-10-06 07:46:57,521 [CommandManager] DEBUG TRACE - [smuxi-engine.dll] Session.Command(cd = <probando a ver si repite 4 veces>)
2015-10-06 07:46:57,525 [CommandManager] DEBUG TRACE - [smuxi-engine.dll] ProtocolManagerBase.OnMessageSent(e = Smuxi.Engine.MessageEventArgs)
2015-10-06 07:46:57,526 [Main] DEBUG TRACE - [smuxi-frontend-gnome-xmpp.dll] XmppPersonChatView.AddMessage(msg = <pcpod> probando a ver si repite 4 veces)

The message was (without quotes) "probando a ver si repite 4 veces"

meebey commented 8 years ago

Ok, this does not contain the XMPP messages from the gTalk server chat but I see now that sending a message from Smuxi to others is duplicated. I thought receiving is duplicated. I will try to reproduce this issue.

meebey commented 8 years ago

The server chat I mean is named "XMPP talk.google.com" and it contains the raw protocol messages, when Smuxi was started with -d

rodoviario commented 8 years ago

I copied 14000 lines from the terminal to a text file Searched for the termi talk.google.com and delete all other lines Deleted some duplicate lines (with only different timestamp) Deleted some of my contacts (I have a lot) But I am unable to attache the 160 lines text file here, I don't know why

Anyway I discovered that with the contact I have the problem there is a difference with some other contacts, and it is that in no place its gmail email is shown... Instead what its shown is a long passwordlike-username@public.talk.google.com

I will put some of the entries here in a code block

2015-10-06 08:48:53,062 [Main] INFO  Smuxi.Engine.Session - Conectando automáticamente a XMPP/ (talk.google.com:5222)...
2015-10-06 08:48:54,494 [Threadpool worker] DEBUG TRACE - [smuxi-engine.dll] Session.CreateChat(id = 'talk.google.com', name = 'XMPP talk.google.com', protocolManager =  (XMPP) (no conectado))
 talk.google.com, talk.google.com) took: 580.30 ms
2015-10-06 08:48:55,075 [Threadpool worker] DEBUG TRACE - [smuxi-engine.dll] Session.AddChat(chat = <XMPP/talk.google.com/XMPP talk.google.com>)
2015-10-06 08:48:55,075 [FrontendManager] DEBUG TRACE - [smuxi-frontend.dll] ChatViewSyncManager.QueueAdd(chatModel = <XMPP/talk.google.com/XMPP talk.google.com>)
2015-10-06 08:48:55,075 [FrontendManager] DEBUG Smuxi.Frontend.ChatViewSyncManager - QueueAdd() <<XMPP/talk.google.com/XMPP talk.google.com>> created sync lock
2015-10-06 08:48:55,075 [Threadpool worker] DEBUG TRACE - [smuxi-engine.dll] Session.SyncChat(chat = <XMPP/talk.google.com/XMPP talk.google.com>)
2015-10-06 08:48:55,075 [FrontendManager] DEBUG TRACE - [smuxi-frontend.dll] ChatViewSyncManager.QueueSync(chatModel = <XMPP/talk.google.com/XMPP talk.google.com>)
2015-10-06 08:48:55,293 [Threadpool worker] DEBUG Smuxi.Engine.ProxySettings - GetWebProxy(<xmpps://talk.google.com:5222/>): returning no proxy
2015-10-06 08:48:55,294 [Threadpool worker] DEBUG TRACE - [smuxi-engine.dll] ContactModel..ctor(id = 'rodolfo.guagnini@gmail.com', identityName = 'pcpod', networkID = 'talk.google.com', networkProtocol = 'XMPP')
2015-10-06 08:48:56,244 [Threadpool worker] DEBUG TRACE - [smuxi-frontend.dll] ChatViewSyncManager.Add(chatModel = <XMPP/talk.google.com/XMPP talk.google.com>)
2015-10-06 08:48:56,245 [Threadpool worker] DEBUG Smuxi.Frontend.ChatViewSyncManager - SyncWorker() <<XMPP/talk.google.com/XMPP talk.google.com>> waiting for sync lock release...
2015-10-06 08:48:56,894 [Main] DEBUG TRACE - [smuxi-frontend.dll] ChatViewManagerBase.CreateChatView(chat = <XMPP/talk.google.com/XMPP talk.google.com>, chatType = Protocol, protocolManagerType = Smuxi.Engine.XmppProtocolManager, parameters = [])
2015-10-06 08:48:56,895 [Main] DEBUG TRACE - [smuxi-frontend-gnome.exe] Frontend.LoadIcon(iconName = 'smuxi-protocol-chat', size = 16, resourceName = 'protocol-chat_256x256.png')
2015-10-06 08:48:56,900 [Main] DEBUG TRACE - [smuxi-frontend-gnome.exe] ChatView..ctor(chat = <XMPP/talk.google.com/XMPP talk.google.com>)
2015-10-06 08:48:56,902 [Main] DEBUG TRACE - [smuxi-frontend-gnome.exe] ProtocolChatView..ctor(chat = <XMPP/talk.google.com/XMPP talk.google.com>)
2015-10-06 08:48:56,904 [Main] DEBUG Smuxi.Frontend.Gnome.ChatViewManager - OnChatAdded(): adding <talk.google.com> at: 2
2015-10-06 08:48:56,907 [Main] DEBUG TRACE - [smuxi-frontend.dll] ChatViewSyncManager.ReleaseSync(chatView = <talk.google.com>)
2015-10-06 08:48:56,907 [Main] DEBUG Smuxi.Frontend.ChatViewSyncManager - ReleaseSync() <<XMPP/talk.google.com/XMPP talk.google.com>> releasing <talk.google.com>
2015-10-06 08:48:56,907 [Threadpool worker] DEBUG Smuxi.Frontend.ChatViewSyncManager - SyncWorker() <<XMPP/talk.google.com/XMPP talk.google.com>> sync lock released
2015-10-06 08:48:56,907 [Threadpool worker] DEBUG TRACE - [smuxi-frontend.dll] ChatViewSyncManager.Sync(chatView = <talk.google.com>)
2015-10-06 08:48:57,277 [Main] DEBUG TRACE - [smuxi-frontend-gnome.exe] ChatTreeView.Render(chatView = <talk.google.com>)
2015-10-06 08:48:57,350 [Threadpool worker] DEBUG TRACE - [smuxi-frontend-gnome.exe] ProtocolChatView.UpdateServerIcon(iconPath = '/home/pcpod/.cache/smuxi/server-icons/XMPP/talk.google.com.ico')
2015-10-06 08:48:57,352 [Threadpool worker] DEBUG Smuxi.Frontend.ChatViewSyncManager - Sync() <talk.google.com>.Sync() done,  syncing took: 445 ms
2015-10-06 08:48:57,352 [Threadpool worker] DEBUG TRACE - [smuxi-engine.dll] FrontendManager.AddSyncedChat(chatModel = <XMPP/talk.google.com/XMPP talk.google.com>)
2015-10-06 08:48:57,647 [Main] DEBUG TRACE - [smuxi-frontend-gnome.exe] ChatTreeView.Render(chatView = <talk.google.com>)
2015-10-06 08:48:57,749 [Main] DEBUG Smuxi.Frontend.Gnome.ChatViewManager - OnChatSynced(): <talk.google.com>.Populate() Position: 2 done, took: 102 ms
2015-10-06 08:48:59,820 [Threadpool worker] DEBUG Smuxi.Engine.ChatModel - InitMessageBuffer(): initializing SqliteMessageBuffer(local, XMPP, talk.google.com, Contacts) took: 4482.86 ms
2015-10-06 08:48:59,820 [Threadpool worker] DEBUG TRACE - [smuxi-engine.dll] Session.AddChat(chat = <XMPP/talk.google.com/Contacts>)
2015-10-06 08:48:59,823 [Threadpool worker] DEBUG TRACE - [smuxi-engine.dll] Session.MoveChat(chat = <XMPP/talk.google.com/Contacts>, newPosition = 3)
2015-10-06 08:48:59,823 [FrontendManager] DEBUG TRACE - [smuxi-frontend.dll] ChatViewSyncManager.QueueAdd(chatModel = <XMPP/talk.google.com/Contacts>)
2015-10-06 08:48:59,823 [FrontendManager] DEBUG Smuxi.Frontend.ChatViewSyncManager - QueueAdd() <<XMPP/talk.google.com/Contacts>> created sync lock
2015-10-06 08:48:59,823 [Threadpool worker] DEBUG TRACE - [smuxi-frontend.dll] ChatViewSyncManager.Add(chatModel = <XMPP/talk.google.com/Contacts>)
2015-10-06 08:48:59,824 [Main] DEBUG TRACE - [smuxi-frontend.dll] ChatViewManagerBase.CreateChatView(chat = <XMPP/talk.google.com/Contacts>, chatType = Group, protocolManagerType = Smuxi.Engine.XmppProtocolManager, parameters = [])
2015-10-06 08:48:59,827 [Main] DEBUG TRACE - [smuxi-frontend-gnome.exe] ChatView..ctor(chat = <XMPP/talk.google.com/Contacts>)
2015-10-06 08:48:59,829 [Main] DEBUG TRACE - [smuxi-frontend-gnome.exe] GroupChatView..ctor(groupChat = <XMPP/talk.google.com/Contacts>)
2015-10-06 08:48:59,833 [Main] DEBUG TRACE - [smuxi-frontend-gnome-xmpp.dll] XmppGroupChatView..ctor(chat = <XMPP/talk.google.com/Contacts>)
2015-10-06 08:48:59,841 [Main] DEBUG Smuxi.Frontend.ChatViewSyncManager - ReleaseSync() <<XMPP/talk.google.com/Contacts>> releasing <Contacts>
2015-10-06 08:49:00,465 [Main] DEBUG TRACE - [smuxi-frontend-gnome.exe] ChatTreeView.Render(chatView = <talk.google.com>)
2015-10-06 08:49:00,520 [Threadpool worker] DEBUG TRACE - [smuxi-common.dll] IconCache.DownloadServerIcon(websiteUrl = 'http://www.google.com/talk/', iconFile = /home/pcpod/.cache/smuxi/server-icons/XMPP/talk.google.com.ico)
2015-10-06 08:49:02,071 [Main] DEBUG TRACE - [smuxi-frontend-gnome.exe] ChatTreeView.Render(chatView = <talk.google.com>)
2015-10-06 08:49:02,213 [Threadpool worker] DEBUG TRACE - [smuxi-engine.dll] ContactModel..ctor(id = '3e0w6lpi2b7jj1i7fz0jfzhekp@public.talk.google.com', identityName = 'Lilian Alford', networkID = 'talk.google.com', networkProtocol = 'XMPP')
2015-10-06 08:49:02,213 [Threadpool worker] DEBUG TRACE - [smuxi-engine-xmpp.dll] XmppPersonModel..ctor(jid = 3e0w6lpi2b7jj1i7fz0jfzhekp@public.talk.google.com, nick = 'Lilian Alford', protocolManager = gmail.com (XMPP))
2015-10-06 08:49:02,216 [Threadpool worker] DEBUG TRACE - [smuxi-engine.dll] ContactModel..ctor(id = 'rodolfo.guagnini@gmail.com', identityName = 'Rodolfo Guagnini', networkID = 'talk.google.com', networkProtocol = 'XMPP')
2015-10-06 08:49:02,216 [Threadpool worker] DEBUG TRACE - [smuxi-engine.dll] ContactModel..ctor(id = 'aguirrejos@gmail.com', identityName = 'Jose Aguirre', networkID = 'talk.google.com', networkProtocol = 'XMPP')
2015-10-06 08:49:02,216 [Threadpool worker] DEBUG TRACE - [smuxi-engine.dll] ContactModel..ctor(id = 'aner002@gmail.com', identityName = 'Andras Calamandrei', networkID = 'talk.google.com', networkProtocol = 'XMPP')
2015-10-06 08:49:02,216 [Threadpool worker] DEBUG TRACE - [smuxi-engine.dll] ContactModel..ctor(id = 'boardernut@gmail.com', identityName = 'Andres Leitner', networkID = 'talk.google.com', networkProtocol = 'XMPP')
2015-10-06 08:49:02,221 [Threadpool worker] DEBUG TRACE - [smuxi-engine.dll] ContactModel..ctor(id = '37lctbcqefb2k006fgwcmvyqzq@public.talk.google.com', identityName = 'maria gabriela rodriguez perez', networkID = 'talk.google.com', networkProtocol = 'XMPP')
2015-10-06 08:49:02,221 [Threadpool worker] DEBUG TRACE - [smuxi-engine-xmpp.dll] XmppPersonModel..ctor(jid = 37lctbcqefb2k006fgwcmvyqzq@public.talk.google.com, nick = 'maria gabriela rodriguez perez', protocolManager = gmail.com (XMPP))
2015-10-06 08:49:02,221 [Threadpool worker] DEBUG TRACE - [smuxi-engine.dll] ContactModel..ctor(id = '3nq0lgianbcy306bt6j92gx7wb@public.talk.google.com', identityName = 'Gabriel Goyo', networkID = 'talk.google.com', networkProtocol = 'XMPP')
2015-10-06 08:49:02,221 [Threadpool worker] DEBUG TRACE - [smuxi-engine-xmpp.dll] XmppPersonModel..ctor(jid = 3nq0lgianbcy306bt6j92gx7wb@public.talk.google.com, nick = 'Gabriel Goyo', protocolManager = gmail.com (XMPP))

Hope it is enought to track down the problem. Thanks!

vician commented 8 years ago

I've discovered that it's related to rewriting of e-mail address to full name. When I send message to my.firend@gmail.com it's without duplication but the thread will not receive a message (only My Friend receives).

meebey commented 8 years ago

The Google XMPP server is not XEP conformant and Smuxi tries to workaround this duplication problem already, see: https://github.com/meebey/smuxi/blob/master/src/Engine-XMPP/Protocols/Xmpp/XmppProtocolManager.cs#L1376

vician commented 8 years ago

What is jid.Server? Is it hostname, my domain or domain of target user?