stv0g / transwhat

A gateway between the XMPP and the WhatsApp IM networks
https://dev.0l.de/wiki/projects/transwhat/
GNU General Public License v3.0
122 stars 25 forks source link

Can't get messages from users not in contact list. #46

Open homocogitum opened 8 years ago

homocogitum commented 8 years ago

I can't get new messages from people that I don't have in my contact list. WhatsApp can do it.

moyamo commented 8 years ago

It would be helpful if you included the parts of log (/var/log/spectrum2/<jid>/backend/backend.log) when someone not in your contact list sends you a message.

homocogitum commented 8 years ago

Log: http://pastebin.com/LdCtbbEW It seems that transwhat is receiving messages but somehow they are lost. In the given log 3 users that are not in my contact list tried to write me messages, but I don't receive them.(numbers 79035712277, 79030225580, 79188748667) But after 10-15 minutes of waiting I received messages from 2 of 3 users that wrote me. The message from third user remained unreceived. So I think that some problem definitely exists.

moyamo commented 8 years ago

Try stopping transwhat and then deleting /var/lib/spectrum2/<jid>/<number>/axolotl.db and check if the problem still persists. This could be related to #33.

homocogitum commented 8 years ago

Yes, deleting axolotl.db helped. Still there are some error messages before sending/receiving some messages in log, such as

ERROR yowsup.layers.axolotl.layer: No session for: 79035714477, 1
ERROR yowsup.layers.axolotl.layer: No valid sessionsBad Mac!
ERROR yowsup.layers.axolotl.layer: No such signedprekeyrecord! 45324 

But everything works fine now. So, can you say what may be the problem? Is there something wrong with database? Do you know what can be done to make it work without deleting database?

homocogitum commented 8 years ago

The problem occured again! And deleting axolotl.db did not help this time. Before deleting there was following error message: http://pastebin.com/6cGU4rgv And after I deleted the database file, the error message dissapeared, and instead of it another message appeared in the logs - many messages appearing 6 times in a second until user disconnected: ERROR yowsup.layers.axolotl.layer: No such signedprekeyrecord! 28098 Can you fix this problem please? Or maybe you can tell me how I can fix this problem myself.

moyamo commented 8 years ago

Did yowsup regenerate the axolotl.db? Have you tried to restart spectrum? You should stop spectrum before you delete the axolotl.db

homocogitum commented 8 years ago

Yes, i restarted spectrum2. And axolotl.db is regenerated. Try yourself to get messages from people not in your contact list. You will see this error.

moyamo commented 8 years ago

1) First check that you are running on the latest develop branch of transwhat. 2) Check you are running the latest version of yowsup. 3) Stop spectrum 4) Delete all the axolotl.db files 5) Start spectrum again 6) See if problem persists

homocogitum commented 8 years ago

Do I have to use yowsup from develop branch as well?

homocogitum commented 8 years ago

Tried all above, the problem still persists. I can see in backend logs that someone is typing a message, but it is not delivered. I can see such lines of log:

2016-03-21 21:29:43,426 INFO Session: Presence received: None None 380979439330@s.whatsapp.net None
2016-03-21 21:29:43,427 ERROR Session: Buddy not found: 380979439330
2016-03-21 21:29:43,785 ERROR yowsup.layers.axolotl.layer: No such signedprekeyrecord! 28098
2016-03-21 21:30:00,921 INFO Session: Started typing: 380979439330
2016-03-21 21:31:49,309 INFO Session: Presence received: unavailable None 380979439330@s.whatsapp.net 1458585109
2016-03-21 21:31:49,309 ERROR Session: Buddy not found: 380979439330

But these messages are among many such messages: ERROR yowsup.layers.axolotl.layer: No such signedprekeyrecord! 28098 That are appearing several times in a second.

homocogitum commented 8 years ago

It seems that it's happening with only some of users that are trying to send a message to transport. Most messages are delivered, but some of them are not.

Myppomeu commented 8 years ago

For me it works the same: in xmpp-client I did not see if someone send me a message. Spectrum2 backend logs before deleting axolotl.db:

2016-04-17 01:04:16,838 INFO Session: Presence received: None None [contact]@s.whatsapp.net None
2016-04-17 01:04:16,838 ERROR Session: Buddy not found: [contact]
2016-04-17 01:04:16,861 ERROR yowsup.layers.axolotl.layer: No such signedprekeyrecord! 47338 
2016-04-17 01:04:39,002 INFO Session: Presence received: unavailable None [contact]@s.whatsapp.net 1460837082
2016-04-17 01:04:39,002 ERROR Session: Buddy not found: [contact]

Logs after stopping Spectrum2 and deleting axolotl.db (deleting does not help):

2016-04-17 01:18:00,824 INFO Session: Created: [my_number]
2016-04-17 01:18:00,824 INFO Session: ilia@xmpp attempting login
2016-04-17 01:18:01,323 INFO Session: Auth success: ilia@xmpp
2016-04-17 01:18:01,480 INFO Session: Presence received: None None [my_number]@s.whatsapp.net None
2016-04-17 01:18:08,220 INFO Session: Presence received: unavailable None [contact]@s.whatsapp.net 1460837280
2016-04-17 01:18:08,220 ERROR Session: Buddy not found: [contact]
2016-04-17 01:18:11,233 INFO Session: Presence received: None None [contact]@s.whatsapp.net None
2016-04-17 01:18:11,233 ERROR Session: Buddy not found: [contact]
2016-04-17 01:18:11,783 INFO Session: Started typing: [contact]
2016-04-17 01:18:14,319 INFO Session: Paused typing: [contact]
2016-04-17 01:18:14,320 INFO Session: Paused typing: [contact]
2016-04-17 01:18:15,940 INFO Session: Started typing: [contact]
2016-04-17 01:18:19,075 ERROR yowsup.layers.axolotl.layer: No such signedprekeyrecord! 47338

Debian 8 x64, Ejabberd 16.02, Spectrum2 2.0.3, Gajim 0.16.5, latest git version of Transwhat (c66d492)

Is there any way to receive messages from user which not in contact list?