只有在尝试在64-bit下运行我的登录代码时,我才会无法登录talk.google.com进行初始测试。32位工作正常。
启用日志记录宏和 siginput 日志记录后,我可以看到它失败的 XML 是这样的:
<stream:stream from="gmail.com" id="3D9A4487B8514DE2" version="1.0" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client">\232\231\377
在 expat 内部,我可以看到有人XML_ERROR_INVALID_TOKEN
被抛出,但我不太确定从那里去哪里。有时它可以进行实际登录,但不久后就死了。它似乎是相对随机的,但总是在前 10 个响应内死亡。我认识到最后的垃圾数据可能是导致无效令牌的原因,但不确定是什么原因造成的。
我最初的想法是切换到64 位(??) 时出现编码问题,但老实说,我只是不知道什么会导致发生这种情况。
以下是 libjingle 死亡的日志中的一个附加示例片段:
137[000:568] RECV <<<<<<<<<<<<<<<<<<<<<<<<< : Thu Feb 21 00:01:31 2013
[000:568] \332
[000:568] <iq id="2" type="result">
[000:568] <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
[000:568] <jid>
[000:568] snip@gmail.com/CD6FF
[000:568] </jid>
[000:568] </bind>
[000:568] </iq>
<iq id="2" type="result"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><jid>snip@gmail.com/CD6FF</jid></bind></iq>x\332Mhanism>X-OAUTH2</mechanism></mechanisms></stream:features>p
还有一个:
[000:217] <stream:stream from="gmail.com" id="2462F624C942" version="1.0" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client">
<stream:stream from="gmail.com" id="246E4B24C942" version="1.0" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client">\225\231\377
其他:
139[000:178] RECV <<<<<<<<<<<<<<<<<<<<<<<<< : Thu Feb 21 00:20:52 2013
[000:178] <stream:stream from="gmail.com" id="B15C99514B664586" version="1.0" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client">
<stream:stream from="gmail.com" id="B15C99514B664586" version="1.0" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client">\366\231\377
其他:
52[000:243] RECV <<<<<<<<<<<<<<<<<<<<<<<<< : Thu Feb 21 00:23:44 2013
[000:243] Q
[000:243] <success xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>
<success xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>\261xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>X-GOOGLE-TOKEN</mechanism><mechanism>X-OAUTH2</mechanism></mechanisms></stream:features>Q
以前有人遇到过这类问题吗?