XMPP and Google Apps issue

I'm noticing in the debug chain that the XMPP daemon isn't binding.

In this example, even though XMPPHP is saying that it is bound to "xmpphpdaemF7A23FE4" as returned by GTalk, it still sends things out from its original resource "xmpphpdaemon". Google Talk *requires* the use of the returned JID. Each run produces the same effect.

This is StatusNet 0.9.3.

(An odd, possibly related issue is that ./stopdaemons.sh doesn't actually ever stop xmppdaemon NOR queuedaemon once ./startdaemons.sh kicks them off. I have to manually kill them.)


------ DEBUG BELOW ------

1280332598 [VERBOSE]: Socket is ready; send it.
1280332598 [VERBOSE]: SENT: <iq xmlns="jabber:client" type="set" id="1"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><resource>xmpphpdaemon</resource></bind></iq>
1280332598 [VERBOSE]: Successfully sent 136 bytes.
1280332598 [VERBOSE]: RECV: <iq id="1" type="result"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><jid>poing@teradome.com/xmpphpdaemF7A23FE4</jid></bind></iq>
1280332598 [INFO]: Bound to poing@teradome.com/xmpphpdaemF7A23FE4
1280332598 [VERBOSE]: Socket is ready; send it.
1280332598 [VERBOSE]: SENT: <iq xmlns='jabber:client' type='set' id='2'><session xmlns='urn:ietf:params:xml:ns:xmpp-session' /></iq>
1280332598 [VERBOSE]: Successfully sent 104 bytes.
1280332598 [VERBOSE]: RECV:
1280332598 [VERBOSE]: RECV: <iq type="result" id="2"/>
1280332598 [INFO]: Session started
1280332598 [DEBUG]: EVENT: session_start
1280332598 [VERBOSE]: Socket is ready; send it.
1280332598 [VERBOSE]: SENT: <presence><status>Send me a message to post a notice</status><priority>100</priority></presence>
1280332598 [VERBOSE]: Successfully sent 96 bytes.
1280332598 [VERBOSE]: Socket is ready; send it.
1280332598 [VERBOSE]: SENT: <iq from='poing@teradome.com/xmpphpdaemon' to='teradome.com' id='ping_1' type='get'><ping xmlns='urn:xmpp:ping'/></iq>
1280332598 [VERBOSE]: Successfully sent 118 bytes.
1280332598 [VERBOSE]: RECV: <iq from="teradome.com" to="poing@teradome.com/xmpphpdaemon" id="ping_1" type="error"><ping xmlns="urn:xmpp:ping"/><error code="400" type="modify"><bad-request xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">If set, the 'from' attribute must be set to the user's full JID.</text></error></iq>

Comments

  • Is no one else using GTalk with their StatusNet install?
  • @namtastic gtalk does not work, sorry.
  • Will switch to a jabber.org account then. Thanks for the clarification.
  • BTW: Any idea why stopdaemons.sh doesn't actually stop anything? (Re: the note in parens in the original posting?)
  • @namtastic not sure, i'll reproduce and file a bug report.
  • For gtalk:
    It deffinitely wants that unique id that is passed back by google. I got some success by taking the id and hardcoding it into these two scripts:
    lib/jabber.php line 264
    lib/xmppmanager.php line 74
    Not that this is really a solution.

    For stopdaemons:
    Looks like you have to make sure to set the piddir:
    $config['daemon']['piddir'] = '/tmp';

    Also the stopdaemons.sh script does not have the queuedaemon in the list of processes to stop. I added it to my local install.

    for f in jabberhandler ombhandler publichandler smshandler pinghandler \
    xmppconfirmhandler xmppdaemon twitterhandler facebookhandler \
    twitterstatusfetcher synctwitterfriends pluginhandler rsscloudhandler \
    queuedaemon ; do


  • condition:
    1. Gtalk
    2. Not Use Queue type
    3. StatusNet 0.9.6

    Solution:
    1. Add Method
    function getFullJid()
    {
    return $this->fulljid;
    }
    To Class Sharing_XMPP() in lib/jabber.php, line 241

    2.Replace
    $this->conn->send("pingid}' type='get'>");

    in lib/xmppmanager.php, line 225 To :

    $this->conn->send("conn->getFullJid()."' to='{$server}' id='ping_{$this->pingid}' type='get'>");
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Sign In with Google Sign In with OpenID