2013-02-21 10 views
3

만, 64 비트에서 내 로그인 코드를 실행하기에 따라 나는 나의 초기 테스트를 위해 talk.google.com에 로그인 할 수있는 오류를 얻고있다. 32 비트가 잘 작동합니다. 로깅 매크로와 siginput 로깅을 가능하게되면64 비트 : ERROR_INVALID_TOKEN

, 나는에 실패 년대 XML이라고 볼 수있는이 : 해외 거주자 내부

<stream:stream from="gmail.com" id="3D9A4487B8514DE2" version="1.0" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client">\232\231\377 

내가 던져지는 XML_ERROR_INVALID_TOKEN이 있음을 볼 수 있습니다,하지만 난 확실히 아니에요 거기서 어디로 가야하는지. 때로는 실제 로그인으로 만들지 만 잠시 후에 죽습니다. 상대적으로 무작위로 보이지만 처음 10 응답 내에서 항상 사망합니다. 나는 마지막에 쓰레기 데이터가 무효화 된 토큰을 일으키는 원인이 될 수 있지만 그 원인을 모르는 것이라고 알고 있습니다.

처음 생각했을 때 64 비트 (??)으로 전환 할 때 인코딩 문제가 있었지만 정직하게, 나는 그런 일이 발생할만한 원인이 무엇인지 모릅니다.

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]   [email protected]/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>[email protected]/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 
여기

은 libjingle가에 죽는 로그에서 추가 예제 코드 조각입니다

누구든지 이전에 이런 유형의 문제가 발생 했습니까?

답변

1

이 보이는 간주한다. 빌드에 무엇이 잘못되었는지는 알 수 없지만 libssl.0.9.8 및 libcrypto.0.9.8 dylib 버전으로 전환하면 모든 것이 잘 작동합니다.

다른 사람들이 SSL 상호 작용에서 이상한 정크를 진단하는 데 도움이되기를 바랍니다.

2

\ddd 시퀀스가 ​​8 진수라고 가정하면 스트림에 잘못된 utf-8로 코드 포인트가 포함되며 이는 xml 데이터 스트림의 기본 예상 인코딩 일 수 있습니다.

콘텐츠를 XML 파서에 공급하기 전에 문제가되는 바이트를 수치 엔티티로 바꿔야합니다. \231 ->&#x99;

또 다른 옵션은 xml 데이터 스트림 앞에 몇 가지 8 비트 문자 세트를 선언하는 XML 프롤로그를 붙이는 것입니다. <?xml version="1.0" encoding="iso-8859-1" ?>.

, 그것은 도움이되기를 바랍니다이 내가 사용하던하려면 openssl 64 비트 빌드에 문제처럼

+0

Expat는이 스 니펫별로 기본적으로 UTF8을 사용하고 있습니다 (https://gist.github.com/zero1zero/ea566a5bbbafdfb253a1). XML_UNICODE이 (가) 내 xcode 프로젝트에 설정되어 있지 않습니다. 또한 libjingle이 https://gist.github.com/zero1zero/e4088d25efc9200f0993을 통해 UTF8 스트림을 확인하는지 확인했습니다. 잠깐 동안 인코딩 불일치가 있다고 가정하면, 어떤 불일치로 인해 ascii 문자가 여전히 이와 같이 올바르게 렌더링됩니다. – Zack

+0

ASCII 문자 0x00-0x7f의 표현은 us-ascii와 utf-8 인코딩간에 차이가 없으므로 문자, 숫자, "프로그래머 기호"가 잘 나옵니다. – collapsar

+0

정확히, 구문 분석 할 xml의 시작과 끝만 잘못 나오는 것은 당연한 것입니다. 대부분의 경우, 그것은 완전히 정크하거나 올바르게 작동해야합니다. 현재의 생각은 32 비트에서 64 비트로의 전환이 어떤 문제를 일으키는 지 중심에 있습니다. 나는 처음과 끝에서 정크 바이트를 유발할 수있는 것에 아직도 정체 상태이다. – Zack