I use the Jabber plugin to connect to Facebook, with username@chat.facebook.com . This used to work just fine. But now it's stuck at telling me it's connecting, yet the contact list gets loaded (all marked as offline) and incoming messages arrive. I can't send any, though. Reproducible: Always Steps to Reproduce: 1. Add facebook account 2. Connect 3. Try to send a message Actual Results: "Please connect first", and refuses to send. Expected Results: Message gets sent.
I have the same problem.
Same here. Thanks!
Facebook jabber server changed something and lot of jabber clinets cannot connect anymore.
Just to comment, Kde-Telepathy continues working.
Same here on KDE 4.11.1 Apparently the bug was solved in Telepathy here: https://bugs.freedesktop.org/show_bug.cgi?id=68829 So I guess the code from this patch can be adapted to Kopete
Kopete using libiris xmpp library. So this bug needs to be fixed in libiris: https://github.com/psi-im/iris
I tried psi and also kadu (both use libiris), and both continue working with facebook. so it has to be a kopete bug.
Ok, thanks for info. Can you enable debug output for jabber via kdebugdialog and post errors?
This is the debug output. I shortened long lists with "..." and anonymized IDs and names with XXXX. YYYYY@chat.facebook.com stands for my facebook-username and XXXX@chat.facebook.com stands for friend facebook-numbers like "-2312132321@chat.facebook.com". kopete(17348)/libkopete Kopete::OnlineStatusManager::cacheLookupByObject: Missed "Offline/jabber_protocol/#ff0000//24/a" in icon cache! kopete(17348)/kopete (jabber) JabberResourcePool::bestJabberResource: Determining best resource for "YYYYYYYY@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::lockedJabberResource: No lock available for "YYYYYYYY@chat.facebook.com" kopete(17348)/kopete (jabber) JabberAccount::connectWithPassword: called kopete(17348)/kopete (jabber) JabberAccount::connectWithPassword: Determined timezone "CEST" with UTC offset 2 hours. kopete(17348)/kopete (jabber) JabberAccount::connectWithPassword: Connecting to Jabber server "chat.facebook.com" : 5222 kopete(17348)/kopete (jabber) JabberAccount::setPresence: Status: "connecting" , Reason: "" kopete(17348)/kopete (jabber) JabberAccount::setPresence: New priority: 4 kopete(17348)/kopete (jabber) JabberAccount::setPresence: Old resource: "" kopete(17348)/kopete (jabber) JabberResourcePool::addResource: Adding new resource "Kopete" for "YYYYYYYY@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::addResource: Initial update of capabilities for JID: "YYYYYYYY@chat.facebook.com" kopete(17348)/kopete (jabber) JabberBaseContact::reevaluateStatus: Determining new status for "YYYYYYYY@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::bestJabberResource: Determining best resource for "YYYYYYYY@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::lockedJabberResource: No lock available for "YYYYYYYY@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::bestJabberResource: Taking ' "Kopete" ' as first available resource. kopete(17348)/libkopete Kopete::OnlineStatusManager::cacheLookupByObject: Missed "Verbindung wird aufgebaut/jabber_protocol/#ff0000/jabber_connecting/16/a" in icon cache! kopete(17348)/kopete (jabber) JabberBaseContact::reevaluateStatus: New status for "YYYYYYYY@chat.facebook.com" is "Verbindung wird aufgebaut" kopete(17348) KopeteWindow::slotIdentityStatusIconChanged: QVariant(, ) kopete(17348)/libkopete Kopete::Contact::setStatusMessage: Setting up the status title property with this: "" kopete(17348)/libkopete Kopete::Contact::setStatusMessage: Setting up the status message property with this: "" kopete(17348)/kopete (jabber) JabberResourcePool::lockToResource: Locking "YYYYYYYY@chat.facebook.com" to "Kopete" kopete(17348)/kopete (jabber) JabberResourcePool::removeLock: Removing resource lock for "YYYYYYYY@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::removeLock: No locks found. kopete(17348)/kopete (jabber) JabberAccount::setPresence: New resource: "Kopete" Unknown signature value: 7 Unknown signature value: 7 Unknown signature value: 795 kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML OUT: <?xml version="1.0"?> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML OUT: <stream:stream xmlns:stream="http://etherx.jabber.org/streams" version="1.0" xmlns="jabber:client" to="chat.facebook.com"> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <?xml version='1.0' ?><stream:stream from='chat.facebook.com' id='1' version='1.0' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' xml:lang='en'> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <stream:features> <starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/> <mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"> <mechanism>X-FACEBOOK-PLATFORM</mechanism> <mechanism>PLAIN</mechanism> </mechanisms> </stream:features> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML OUT: <starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/> " unexpected version response kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "TLS handshake done, testing certificate validity..." kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "Identity and certificate valid, continuing." kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML OUT: <?xml version="1.0"?> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML OUT: <stream:stream xmlns:stream="http://etherx.jabber.org/streams" version="1.0" xmlns="jabber:client" to="chat.facebook.com"> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <?xml version='1.0' ?><stream:stream from='chat.facebook.com' id='1' version='1.0' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' xml:lang='en'> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <stream:features> <mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"> <mechanism>X-FACEBOOK-PLATFORM</mechanism> <mechanism>PLAIN</mechanism> </mechanisms> </stream:features> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "Sending auth credentials..." kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML OUT: <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="PLAIN">XXXXXXXXXXXXXXXXXXXXXXX</auth> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <success xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML OUT: <?xml version="1.0"?> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML OUT: <stream:stream xmlns:stream="http://etherx.jabber.org/streams" version="1.0" xmlns="jabber:client" to="chat.facebook.com"> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <?xml version='1.0' ?><stream:stream from='chat.facebook.com' id='1' version='1.0' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' xml:lang='en'> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <stream:features> <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/> <session xmlns="urn:ietf:params:xml:ns:xmpp-session"/> </stream:features> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML OUT: <iq type="set" id="bind_1"> <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"> <resource>Kopete</resource> </bind> </iq> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <iq xmlns="jabber:client" from="chat.facebook.com" type="result" id="bind_1"> <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"> <jid>XXXXX@chat.facebook.com/Kopete</jid> </bind> </iq> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "Connected to Jabber server." kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML OUT: <iq type="set" id="aab4a"> <session xmlns="urn:ietf:params:xml:ns:xmpp-session"/> </iq> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <iq from="chat.facebook.com" type="result" id="aab4a"> <session xmlns="urn:ietf:params:xml:ns:xmpp-session"/> </iq> " kopete(17348)/kopete (jabber) JabberAccount::slotConnected: Connected to Jabber server. kopete(17348)/kopete (jabber) JabberAccount::slotConnected: Requesting roster... kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML OUT: <iq type="get" id="XXXXX"> <query xmlns="jabber:iq:roster"/> </iq> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <presence from="XXXXX@chat.facebook.com" to="XXXXX@chat.facebook.com/Kopete"> <x xmlns="vcard-temp:x:update"> <photo>XXXXXXXXXXXXX</photo> </x> </presence> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <presence from="XXXXX@chat.facebook.com" to="XXXXX@chat.facebook.com/Kopete"> <x xmlns="vcard-temp:x:update"> <photo>XXXXXXXXXXXXX</photo> </x> </presence> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <presence from="XXXXX@chat.facebook.com" to="XXXXX@chat.facebook.com/Kopete"> <x xmlns="vcard-temp:x:update"> <photo>XXXXXXXXXXXXX</photo> </x> </presence> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <presence from="XXXXX@chat.facebook.com" to="XXXXX@chat.facebook.com/Kopete"> <x xmlns="vcard-temp:x:update"> <photo>XXXXXXXXXXXXX</photo> </x> </presence> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <presence from="XXXXX@chat.facebook.com" to="XXXXX@chat.facebook.com/Kopete"> <x xmlns="vcard-temp:x:update"> <photo>XXXXXXXXXXXXX</photo> </x> </presence> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <presence from="XXXXX@chat.facebook.com" to="XXXXX@chat.facebook.com/Kopete"> <x xmlns="vcard-temp:x:update"> <photo>XXXXXXXXXXXXX</photo> </x> </presence> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <presence from="XXXXX@chat.facebook.com" to="XXXXX@chat.facebook.com/Kopete"> <x xmlns="vcard-temp:x:update"> <photo>XXXXXXXXXXXXX</photo> </x> </presence> " kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <iq type="result" id="XXXXX" to="XXXXX@chat.facebook.com/Kopete"> <query xmlns="jabber:iq:roster"> <item subscription="both" name="XXXXXX" jid="XXXXX@chat.facebook.com"> <group>Facebook Friends</group> </item> <item subscription="both" name="XXXXXX" jid="XXXXX@chat.facebook.com"> <group>Facebook Friends</group> </item> .... </query> </iq> " kopete(17348)/kopete (jabber) JabberAccount::slotContactUpdated: New roster item "XXXXX@chat.facebook.com" (Subscription: "both" ) kopete(17348)/kopete (jabber) JabberContactPool::addContact: Updating existing contact "XXXXX@chat.facebook.com" - JabberContact(0xc4edc0) kopete(17348)/kopete (jabber) JabberBaseContact::updateContact: Synchronizing local copy of "XXXXX@chat.facebook.com" with information received from server. (name=' "XXXXXX" ' groups=' ("Facebook Friends") ') kopete(17348)/kopete (jabber) JabberAccount::slotContactUpdated: New roster item "XXXXX@chat.facebook.com" (Subscription: "both" ) kopete(17348)/kopete (jabber) JabberContactPool::addContact: Updating existing contact "XXXXX@chat.facebook.com" - JabberContact(0x8d6300) kopete(17348)/kopete (jabber) JabberBaseContact::updateContact: Synchronizing local copy of "XXXXX@chat.facebook.com" with information received from server. (name=' "XXXXXX" ' groups=' ("Facebook Friends") ') ... kopete(17348)/kopete (jabber) JabberContactPool::cleanUp: Cleaning dirty items from contact pool. kopete(17348)/kopete (jabber) JabberAccount::slotRosterRequestFinished: Setting initial presence... kopete(17348)/kopete (jabber) JabberAccount::setPresence: Status: "" , Reason: "" kopete(17348)/kopete (jabber) JabberAccount::setPresence: New priority: 4 kopete(17348)/kopete (jabber) JabberAccount::setPresence: Old resource: "Kopete" kopete(17348)/kopete (jabber) JabberResourcePool::addResource: Adding new resource "Kopete" for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::addResource: Initial update of capabilities for JID: "XXXXX@chat.facebook.com/Kopete" kopete(17348)/kopete (jabber) JabberResourcePool::lockToResource: Locking "XXXXX@chat.facebook.com/Kopete" to "Kopete" kopete(17348)/kopete (jabber) JabberResourcePool::removeLock: Removing resource lock for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::removeLock: No locks found. kopete(17348)/kopete (jabber) JabberResourcePool::lockToResource: WARNING: No match found! kopete(17348)/kopete (jabber) JabberAccount::setPresence: New resource: "Kopete" kopete(17348)/kopete (jabber) JabberAccount::setPresence: We were not connected, presence update aborted. kopete(17348)/kopete (jabber) JabberBaseContact::reevaluateStatus: Determining new status for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::bestJabberResource: Determining best resource for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::lockedJabberResource: No lock available for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberBaseContact::reevaluateStatus: New status for "XXXXX@chat.facebook.com" is "Offline" kopete(17348)/libkopete Kopete::Contact::setStatusMessage: Setting up the status title property with this: "" kopete(17348)/libkopete Kopete::Contact::setStatusMessage: Setting up the status message property with this: "" kopete(17348)/kopete (jabber) JabberBaseContact::reevaluateStatus: Determining new status for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::bestJabberResource: Determining best resource for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::lockedJabberResource: No lock available for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberBaseContact::reevaluateStatus: New status for "XXXXX@chat.facebook.com" is "Offline" kopete(17348)/libkopete Kopete::Contact::setStatusMessage: Setting up the status title property with this: "" kopete(17348)/libkopete Kopete::Contact::setStatusMessage: Setting up the status message property with this: "" .... kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <presence from="XXXXX@chat.facebook.com" to="XXXXX@chat.facebook.com/Kopete"> <x xmlns="vcard-temp:x:update"> <photo>XXXXXXXXXXXXX</photo> </x> </presence> " kopete(17348)/kopete (jabber) JabberAccount::slotResourceAvailable: New resource available for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::addResource: Adding new resource "" for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberBaseContact::reevaluateStatus: Determining new status for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::bestJabberResource: Determining best resource for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::lockedJabberResource: No lock available for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::bestJabberResource: Taking ' "" ' as first available resource. kopete(17348)/libkopete Kopete::OnlineStatusManager::cacheLookupByObject: Missed "Online/jabber_protocol/#ff0000//16/a" in icon cache! kopete(17348)/kopete (jabber) JabberBaseContact::reevaluateStatus: New status for "XXXXX@chat.facebook.com" is "Online" kopete(17348)/libkopete Kopete::Contact::setStatusMessage: Setting up the status title property with this: "" kopete(17348)/libkopete Kopete::Contact::setStatusMessage: Setting up the status message property with this: "" kopete(17348)/kopete (jabber - raw protocol) JabberAccount::slotClientDebugMessage: "XML IN: <presence from="XXXXX@chat.facebook.com" to="XXXXX@chat.facebook.com/Kopete"> <x xmlns="vcard-temp:x:update"> <photo>XXXXXXXXXXXXX</photo> </x> </presence> " kopete(17348)/kopete (jabber) JabberAccount::slotResourceAvailable: New resource available for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::addResource: Adding new resource "" for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberBaseContact::reevaluateStatus: Determining new status for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::bestJabberResource: Determining best resource for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::lockedJabberResource: No lock available for "XXXXX@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::bestJabberResource: Taking ' "" ' as first available resource. kopete(17348)/kopete (jabber) JabberBaseContact::reevaluateStatus: New status for "XXXXX@chat.facebook.com" is "Online" kopete(17348)/libkopete Kopete::Contact::setStatusMessage: Setting up the status title property with this: "" kopete(17348)/libkopete Kopete::Contact::setStatusMessage: Setting up the status message property with this: "" ...
(In reply to comment #9) > kopete(17348)/kopete (jabber) JabberResourcePool::addResource: Adding new resource "Kopete" for "XXXXX@chat.facebook.com" > kopete(17348)/kopete (jabber) JabberResourcePool::addResource: Initial update of capabilities for JID: "XXXXX@chat.facebook.com/Kopete" > kopete(17348)/kopete (jabber) JabberResourcePool::lockToResource: Locking "XXXXX@chat.facebook.com/Kopete" to "Kopete" > kopete(17348)/kopete (jabber) JabberResourcePool::removeLock: Removing resource lock for "XXXXX@chat.facebook.com" > kopete(17348)/kopete (jabber) JabberResourcePool::removeLock: No locks found. Here can be problem. Kopete cannot find resource "Kopete". In function JabberResourcePool::lockToResource() is one foreach loop. Can you list all available resources in this loop? kDebug(JABBER_DEBUG_GLOBAL) << "testing resource: " << mResource->resource().name().toLower(); Also problem is here: (In reply to comment #9) > kopete(17348)/kopete (jabber) JabberAccount::setPresence: We were not connected, presence update aborted. Account::isConnected() returning false and this happen only when myself()->isOnline() is false.
I inserted your debug-code: it appears 3 times: 1) kopete(17348)/kopete (jabber) JabberResourcePool::lockToResource: Locking YYYYYYYY@chat.facebook.com" to "Kopete" kopete(17348)/kopete (jabber) JabberResourcePool::removeLock: Removing resource lock for YYYYYYYY@chat.facebook.com" kopete(17348)/kopete (jabber) JabberResourcePool::removeLock: No locks found. kopete(9956)/kopete (jabber) JabberResourcePool::lockToResource: testing resource: "kopete" kopete(9956)/kopete (jabber) JabberAccount::setPresence: New resource: "Kopete" 2+3) kopete(9956)/kopete (jabber) JabberResourcePool::removeLock: No locks found. kopete(9956)/kopete (jabber) JabberResourcePool::lockToResource: testing resource: "kopete" kopete(9956)/kopete (jabber) JabberResourcePool::lockToResource: testing resource: "kopete" kopete(9956)/kopete (jabber) JabberResourcePool::lockToResource: WARNING: No match found! kopete(9956)/kopete (jabber) JabberAccount::setPresence: New resource: "Kopete" kopete(9956)/kopete (jabber) JabberAccount::setPresence: We were not connected, presence update aborted.
I extended your debug code: kDebug(JABBER_DEBUG_GLOBAL) << "testing resource: " << mResource->resource().name().toLower(); kDebug(JABBER_DEBUG_GLOBAL) << "name2: " << resource.name().toLower(); kDebug(JABBER_DEBUG_GLOBAL) << "jid: " << mResource->jid().bare().toLower(); kDebug(JABBER_DEBUG_GLOBAL) << "jid2: " << jid.full().toLower(); with result: kopete(10235)/kopete (jabber) JabberResourcePool::lockToResource: testing resource: "kopete" kopete(10235)/kopete (jabber) JabberResourcePool::lockToResource: name2: "kopete" kopete(10235)/kopete (jabber) JabberResourcePool::lockToResource: jid: "mynick@chat.facebook.com" kopete(10235)/kopete (jabber) JabberResourcePool::lockToResource: jid2: "-12345@chat.facebook.com/kopete" kopete(10235)/kopete (jabber) JabberResourcePool::lockToResource: testing resource: "kopete" kopete(10235)/kopete (jabber) JabberResourcePool::lockToResource: name2: "kopete" kopete(10235)/kopete (jabber) JabberResourcePool::lockToResource: jid: "-12345@chat.facebook.com" kopete(10235)/kopete (jabber) JabberResourcePool::lockToResource: jid2: "-12345@chat.facebook.com/kopete" kopete(10235)/kopete (jabber) JabberResourcePool::lockToResource: WARNING: No match found!
Created attachment 82388 [details] Fix JabberResourcePool::lockToResource() Try this patch (also with verbose debug output) what happen.
still not working, output: first appearance: kopete(3676)/kopete (jabber) JabberBaseContact::reevaluateStatus: New status for "mynick@chat.facebook.com" is "Verbindung wird aufgebaut" kopete(3676) KopeteWindow::slotIdentityStatusIconChanged: QVariant(, ) kopete(3676)/libkopete Kopete::Contact::setStatusMessage: Setting up the status title property with this: "" kopete(3676)/libkopete Kopete::Contact::setStatusMessage: Setting up the status message property with this: "" kopete(3676)/kopete (jabber) JabberResourcePool::lockToResource: Locking "mynick@chat.facebook.com" to "Kopete" kopete(3676)/kopete (jabber) JabberResourcePool::removeLock: Removing resource lock for "mynick@chat.facebook.com" kopete(3676)/kopete (jabber) JabberResourcePool::removeLock: No locks found. kopete(3676)/kopete (jabber) JabberAccount::setPresence: New resource: "Kopete" second appearance: kopete(3676)/kopete (jabber) JabberResourcePool::addResource: Adding new resource "Kopete" for "-12345@chat.facebook.com" kopete(3676)/kopete (jabber) JabberResourcePool::addResource: Initial update of capabilities for JID: "-12345@chat.facebook.com/Kopete" kopete(3676)/kopete (jabber) JabberResourcePool::lockToResource: Locking "-12345@chat.facebook.com" to "Kopete" kopete(3676)/kopete (jabber) JabberResourcePool::removeLock: Removing resource lock for "-12345@chat.facebook.com" kopete(3676)/kopete (jabber) JabberResourcePool::removeLock: No locks found. kopete(3676)/kopete (jabber) JabberAccount::setPresence: New resource: "Kopete" kopete(3676)/kopete (jabber) JabberAccount::setPresence: We were not connected, presence update aborted.
Ok, you found another bug in JabberResourcePool::lockToResource() and I will commit my patch after testing it. Lock to resource not working (correctly). But look like bug in JabberResourcePool::lockToResource() is not what causing facebook problems. (In reply to comment #14) > kopete(3676)/kopete (jabber) JabberAccount::setPresence: We were not > connected, presence update aborted. This is problem ^^^. (In reply to comment #10) > (In reply to comment #9) > > kopete(17348)/kopete (jabber) JabberAccount::setPresence: We were not connected, presence update aborted. > > Account::isConnected() returning false and this happen only when > myself()->isOnline() is false. So need to investigate why myself contact is offline.
when connecting to facebook to jabber-icon is blinking (=connecting) all the time (never stops). do you know, when myself is set online in code? which signal/xml-message is responsable for that?
Do not know. But myself contact is created as first contact in jabberaccount.cpp. You can look at jabbercontact and jaberbasecontact
I now had some time to investigate and found the relevant code paths: 1. facebook only allows two auth methods anymore: X-FACEBOOK-PLATFORM, PLAIN so, in the jabber config dialog one has to allow plain login 2. jabberaccount.cpp setPresence Method there are these lines: if ( client() ){ jid = client()->jid (); } if ( jid.isEmpty() && myself() ){ jid = myself()->contactId (); } On the first call (when connecting) the client->jid is empty, so the one from the account is taken and has the form "mynick@chat.facebook.com". On the second call (after rooster update) the client->jid is set and it is a number like "-123123123@chat.facebook.com", which is my facebook-id. Because the second one is different, a new ressource is created "XMPP::Resource newResource ( m_lastResource, newStatus );" , which is not online, so the setpresence-method is aborted. When I comment out that line: // jid = client()->jid (); connecting works again. So what is this line for? It is important? 3. in libiris in xmmp_vcard.cpp: the contact-photos don't work anymore. I found out, that facebook sends now "\r\n" sequences as line breaks so you have to replace the line d->photo = QCA::Base64().stringToArray(subTagText(i, "BINVAL").replace("\n","")).toByteArray(); by d->photo = QCA::Base64().stringToArray(subTagText(i, "BINVAL").replace("\n","").replace("\r","")).toByteArray();
(In reply to comment #18) > I now had some time to investigate and found the relevant code paths: > > 1. facebook only allows two auth methods anymore: X-FACEBOOK-PLATFORM, PLAIN > > so, in the jabber config dialog one has to allow plain login > > 2. jabberaccount.cpp setPresence Method there are these lines: > if ( client() ){ > jid = client()->jid (); > } > > if ( jid.isEmpty() && myself() ){ > jid = myself()->contactId (); > } > > On the first call (when connecting) the client->jid is empty, so the one > from the account is taken and has the form "mynick@chat.facebook.com". On > the second call (after rooster update) the client->jid is set and it is a > number like "-123123123@chat.facebook.com", which is my facebook-id. > > Because the second one is different, a new ressource is created > "XMPP::Resource newResource ( m_lastResource, newStatus );" > , which is not online, so the setpresence-method is aborted. > > When I comment out that line: > // jid = client()->jid (); > connecting works again. So what is this line for? It is important? > > > 3. in libiris in xmmp_vcard.cpp: > > the contact-photos don't work anymore. I found out, that facebook sends now > "\r\n" sequences as line breaks so you have to replace the line > > d->photo = QCA::Base64().stringToArray(subTagText(i, > "BINVAL").replace("\n","")).toByteArray(); > > by > > d->photo = QCA::Base64().stringToArray(subTagText(i, > "BINVAL").replace("\n","").replace("\r","")).toByteArray(); This fixes it for me :) thank you.
it would be good to know, if other jabber server still work with this fix. does anyone uses other jabber services?
I will look at your patch properly, but now I do not have here kopete git and development env. Please wait about a week.
yes, gmail and it still works too. One problem i am still having in facebook is when someone who is NOT on my buddy list sends me a message, they appear online even after they go offline till i close kopete.
Created attachment 82798 [details] patch to fix facebook connection (incorporates all changes from the previous discussion) Thanks for the proposed fixes which seem to work for me, too. But instead of .replace("\n","").replace("\r","")) I'd propose to go over the string only once with a regular expression that replaces all valid "newline" representations only, i.e.: .replace(QRegExp("\r?\n|\n\r?"),"")) I set up a branch of the openSUSE kopete package with this patch to test: https://build.opensuse.org/package/show/home:NicoK:branches:KDE:Distro:Factory/kopete
you have bug in first condition. you need to comment also "if" because you commented code after "if".
@pali: you are right, the "if" needs also commented. I am not firm with jabber. Could this patch have negative effects on other jabber servers?
I did only quick look on patch and did syntax check :-) I wrote that I do not have env for testing (and semantic checking), so wait... Then I will look at patch and also test aginst more xmpp servers what happen.
Created attachment 82825 [details] patch to fix facebook connection (incorporates all changes from the previous discussion) ok, fix the comment around the if (I usually add braces around if's and didn't see that this one doesn't)
regarding affects on other Jabber servers: my jabber.org and google mail servers show online at least, pictures of gmail contacts are still shown - I don't have enough jabber.org contacts though to verify
(In reply to comment #27) > Created attachment 82825 [details] > patch to fix facebook connection (incorporates all changes from the previous > discussion) > > ok, fix the comment around the if > (I usually add braces around if's and didn't see that this one doesn't) I was also affected by this bug, on debian. Your patch worked for me, thanks!
There is a regression. now on gtalk if someone who was set as 'busy' with a custom message loses connection, it won't show them as offline on my buddy list till I go offline and online again.
Now I looked at code and JabberClient::jid() is what we should use. (Correct me if I'm wrong) So problem is that JabberClient::jid() returning bad value which cause that facebook not working. Please note that JabberClient::jid() is used on more places (not only in this problematic). Can somebody with facebook account dig why it returing bad value and jid is not correctly updated?
@Nico Kruber: Your patch changing file protocols/jabber/libiris/src/xmpp/xmpp-im/xmpp_vcard.cpp which is part of external libiris library. I want to periodically sync libiris from upstream, so please review this change with upstream iris project: https://github.com/psi-im/iris
(In reply to comment #32) > @Nico Kruber: Your patch changing file > protocols/jabber/libiris/src/xmpp/xmpp-im/xmpp_vcard.cpp which is part of > external libiris library. I want to periodically sync libiris from upstream, > so please review this change with upstream iris project: > https://github.com/psi-im/iris Unbundle third party libs is the solution ;)
I know, but that xmpp library (libiris) is part of kopete tree for many years, because (upstream) library does not support building shared version and is used as glue only...
(In reply to comment #34) > I know, but that xmpp library (libiris) is part of kopete tree for many > years, because (upstream) library does not support building shared version > and is used as glue only... Yeah sorry that was just off-topic by me. When do you expect to have a working patch for the problem. We need this issue fixed in downstream :-/
(In reply to comment #31) > Now I looked at code and JabberClient::jid() is what we should use. (Correct > me if I'm wrong) So problem is that JabberClient::jid() returning bad value > which cause that facebook not working. Please note that JabberClient::jid() > is used on more places (not only in this problematic). Can somebody with > facebook account dig why it returing bad value and jid is not correctly > updated? I have no time to dig in the code currently, but I saw, that facebook account-ids look like nickname@chat.facebook.com and in the exchanged jabber-xml-messages the own id changes after login to something like -1234566@chat.facebook.com both, the nickname and the number are unique identifiers for the facebook account. but you can't for example use the second one as the account-id in kopete. see my log from above.
(In reply to comment #18) > 2. jabberaccount.cpp setPresence Method there are these lines: > if ( client() ){ > jid = client()->jid (); > } > > if ( jid.isEmpty() && myself() ){ > jid = myself()->contactId (); > } > > On the first call (when connecting) the client->jid is empty, so the one > from the account is taken and has the form "mynick@chat.facebook.com". On > the second call (after rooster update) the client->jid is set and it is a > number like "-123123123@chat.facebook.com", which is my facebook-id. > > Because the second one is different, a new ressource is created > "XMPP::Resource newResource ( m_lastResource, newStatus );" > , which is not online, so the setpresence-method is aborted. > > When I comment out that line: > // jid = client()->jid (); > connecting works again. So what is this line for? It is important? > > I read this again and maybe I understand where is problem. Id of kopete contact (myself too) cannot be changed and is defined in constructor. So myself contact id is always account id. At startup client()->jid() is contact id with configured resource name (from account settings). But after successfull login it is changed to something which server returns. It can send to you new resource name which you will use (e.g gmail adding some hash after resource which you selected...). So client()->jid() has correct resource name for myself contact which is in use. And if I understand it correctly, facebook xmpp server also changing JID (not only resource name) and then JabberAccount::setPresence() remove old resource from pool for myself account and add some new resource for new JID (returned by client()->jid()). If above is true (xmpp server force you to use other/new JID), then it is hard to use this new JID and show it to GUI. But you wrote that if you change code to use "mynick@..." JID then it working. Because it is not possible to change JID of any existing contact (myself too), I can try to create patch which will do not change bare JID in client->jid() (only change resource name). If my idea is correct, then this should fix this problem. BTW, I do not know if xmpp specification allows xmpp server to force xmpp client to use another JID as specified in loggin. But I need some other tests: 1. Use some other Jabber client (e.g Pidgin) to connect to facebook xmpp server. Then start Kopete (unpatched!) and try to connect via same username and check if this (have some already logged in jabber client) fixing this problem. (Debug log will be usefull too) 2. Try to create new kopete jabber account in form "-123123123@chat.facebook.com" and post debug log whe logging 3. Check if you can add new contact to your roster in form "-123123123@chat.facebook.com" and also in form "nick@chat.facebook.com"
(In reply to comment #30) > There is a regression. now on gtalk if someone who was set as 'busy' with a > custom message loses connection, it won't show them as offline on my buddy > list till I go offline and online again. Are you sure that patch(es) proposed here really breaking gtalk as you described? Can you reproduce it? Or maybe it was only some problem on gtalk server? I'm asking because patch(es) here have nothing to do with message and statuses of *other* (non myself) contacts.
Created attachment 82989 [details] This patch change only resource (not bare JID) for client()->jid()
your patch works for me with facebook :-) (except the avatar-picture, see the other patch for libiris) I currently have no time to make the other three tests, perhaps in the next 2 weeks.
I updated libiris from github and pushed more jabber patches (fixed filetransfer support too) to my cloned repo: http://quickgit.kde.org/?p=clones/kopete/pali/kopete.git Please check if everything working (facebook and other jabber servers). After testing I will push it to kopete master git. But needs to be sure that it not bring new regressions.
(In reply to comment #38) > (In reply to comment #30) > > There is a regression. now on gtalk if someone who was set as 'busy' with a > > custom message loses connection, it won't show them as offline on my buddy > > list till I go offline and online again. > > Are you sure that patch(es) proposed here really breaking gtalk as you > described? Can you reproduce it? Or maybe it was only some problem on gtalk > server? I'm asking because patch(es) here have nothing to do with message > and statuses of *other* (non myself) contacts. Nope, only happened once. I should not have labeled it a regression. but it was the first time it happened and I can't reproduce it so just disregard my note. :)
thank you for the updates, Pali - I applied all the changes to my openSUSE package of kopete 4.11.2 at https://build.opensuse.org/package/show/home:NicoK:branches:KDE:Distro:Factory/kopete (basically everything from "git diff 33c0bd4acb^ 9178763fbd") Facebook and Google Talk login work - will try the rest later
there is one thing that changed with these patches but I'm not sure whether this is intended or not - it is probably related to commit f0b1e6afb3 1) I'm in "do not disturb" aka. "busy" state in a google talk account 2) I set kopete to go offline which is done successfully 3) after a while without doing anything on kopete I appear as "away" -> now my mobile may login to google in the meantime but this shouldn't affect the online/offline state of kopete, should it? IMHO, offline = no connections / connection attempts
Ah, commit f0b1e6afb3 should fix your above problem :-( Can you send me debug output from kopete (enable libkopete and kopete jabber in kdebugdialog)?
Created attachment 83065 [details] crash data http://quickgit.kde.org/?p=clones/kopete/pali/kopete.git I did a kopete build from this address it crashes with the attached backtrace when i disconnect
(In reply to comment #46) > Created attachment 83065 [details] > crash data > > http://quickgit.kde.org/?p=clones/kopete/pali/kopete.git > I did a kopete build from this address > it crashes with the attached backtrace when i disconnect Please recompile with debug symbols.
Git commit dd536999ce5611ad5d80adb813f7857ab29f20d4 by Pali Rohár. Committed on 21/10/2013 at 13:33. Pushed by pali into branch 'master'. Do not allow overwriting bare jid of myself account in jabber client Kopete account id and myself contact id cannot be changed. This means that all jabber code must use bare jid for myself contact specified in account dialog. Jabber server can change user jid after successfull login, but there is no way in Kopete to propage it. So allow changing only of resource name and do not tell other Kopete code about bare jid changes (which is account id and myself contact id). Chaning resource name is OK. Without this patch it is not possible to login to jabber servers which chaning bare jid (e.g facebook). FIXED-IN: 4.12 M +2 -3 protocols/jabber/jabberclient.cpp http://commits.kde.org/kopete/dd536999ce5611ad5d80adb813f7857ab29f20d4
Git commit 7801dae888e6fd145e6755e9f89d2bf04092bf4a by Pali Rohár. Committed on 21/10/2013 at 10:45. Pushed by pali into branch 'master'. Fix JabberResourcePool::lockToResource When locking contact to resource check only for bare JID. It does not make sense to check for full JID with (maybe old/bad) resource name M +2 -2 protocols/jabber/jabberresourcepool.cpp http://commits.kde.org/kopete/7801dae888e6fd145e6755e9f89d2bf04092bf4a
I pushed some commits to kopete master, so test if it working...
Will the patches be backported to KDE/4.11?
@Johannes Huber: I do not want to backport full patchset (with updated libiris and filetransfer) because there could be regression. But if you can test above two small commits (dd536999ce5611ad5d80adb813f7857ab29f20d4 and 7801dae888e6fd145e6755e9f89d2bf04092bf4a) cherry-picking on KDE 4.11 if fixing logging to facebook server, I can backport them.
(In reply to comment #52) > @Johannes Huber: I do not want to backport full patchset (with updated > libiris and filetransfer) because there could be regression. But if you can > test above two small commits (dd536999ce5611ad5d80adb813f7857ab29f20d4 and > 7801dae888e6fd145e6755e9f89d2bf04092bf4a) cherry-picking on KDE 4.11 if > fixing logging to facebook server, I can backport them. Tested master, works for me. Backporting is appreciated from downstream side. :)
I mean to test above two commits (patches) on branch KDE/4.11 (not master)
Applied both patches to kopete-4.11.2. $BUG summary fixed. So please backport them to KDE/4.11. Greetings
Git commit bf072df3136e2980d3dba356aa79c0060f64b1ea by Pali Rohár. Committed on 21/10/2013 at 13:33. Pushed by pali into branch 'KDE/4.11'. Do not allow overwriting bare jid of myself account in jabber client Kopete account id and myself contact id cannot be changed. This means that all jabber code must use bare jid for myself contact specified in account dialog. Jabber server can change user jid after successfull login, but there is no way in Kopete to propage it. So allow changing only of resource name and do not tell other Kopete code about bare jid changes (which is account id and myself contact id). Chaning resource name is OK. Without this patch it is not possible to login to jabber servers which chaning bare jid (e.g facebook). FIXED-IN: 4.11.3 M +2 -3 protocols/jabber/jabberclient.cpp http://commits.kde.org/kopete/bf072df3136e2980d3dba356aa79c0060f64b1ea
Git commit 0352c3eea69fbcac7687878cf6b076794ab10e3a by Pali Rohár. Committed on 07/11/2013 at 15:57. Pushed by pali into branch 'KDE/4.12'. Update libiris from https://github.com/psi-im/iris.git commit e1e776b5b7752dca7b9383677850f72dc7375fdb Ignore /[\r\n]+/ in vcard base64 photo M +1 -1 protocols/jabber/libiris/src/xmpp/xmpp-im/xmpp_vcard.cpp http://commits.kde.org/kopete/0352c3eea69fbcac7687878cf6b076794ab10e3a
Git commit 57f5eecc323531b29db42fa44b27052c900fea2d by Pali Rohár. Committed on 07/11/2013 at 16:08. Pushed by pali into branch 'KDE/4.11'. Jabber libiris library: Ignore /[\r\n]+/ in vcard base64 photo A +13 -0 protocols/jabber/libiris/patches/09_vcard_photo.patch M +1 -1 protocols/jabber/libiris/src/xmpp/xmpp-im/xmpp_vcard.cpp http://commits.kde.org/kopete/57f5eecc323531b29db42fa44b27052c900fea2d