Я пытаюсь реализовать Libjingle от Google (версия: 0.6.14) Пример PCP, и я получаю ошибку 501: функция не реализована во время выполнения. В частности, ошибка возникает после того, как каждая «учетная запись» была подключена, аутентифицирована и начала взаимодействовать с другой. В конце приводится сокращенный журнал взаимодействия.
Я настроил свой собственный jabber-сервер (используя OpenFire на сервере Amazon EC2), открыл все необходимые порты и добавил каждую «учетную запись» в реестр других. Сервер настроен на передачу файлов. Поскольку я новичок в работе с серверами, я не уверен, почему возникает эта ошибка и как ее исправить.
Заранее спасибо, AeroBuffalo
P.S. Сообщите мне, если потребуется дополнительная информация (например, полный журнал программы для одного или обоих концов).
Конец приема:
[018:217] SEND >>>>>>>>>>>>>>>>>>>>>>>>> : Thu Jul 5 14:17:15 2012
[018:217] <iq to="forgesend@forgejabber.com/pcp" type="set" id="5">
[018:217] <jingle xmlns="urn:xmpp:jingle:1" action="session-initiate" sid="402024303" initiator="forgereceive@forgejabber.com/pcp">
[018:217] <content name="securetunnel" creator="initiator">
[018:217] <description xmlns="http://www.google.com/talk/securetunnel">
[018:217] <type>send:winein.jpeg</type>
[018:217] <client-cert>--BEGIN CERTIFICATE--END CERTIFICATE--</client-cert>
[018:217] </description>
[018:217] <transport xmlns="http://www.google.com/transport/p2p"/>
[018:217] </content>
[018:217] </jingle>
[018:217] <session xmlns="http://www.google.com/session" type="initiate" id="402024303" initiator="forgereceive@forgejabber.com/pcp">
[018:217] <description xmlns="http://www.google.com/talk/securetunnel">
[018:217] <type>send:winein.jpeg</type>
[018:217] <client-cert>--BEGIN CERTIFICATE--END CERTIFICATE--</client-cert>
[018:217] </description></session>
[018:217] </iq>
[018:217] RECV <<<<<<<<<<<<<<<<<<<<<<<<< : Thu Jul 5 14:17:15 2012
[018:217] <presence to="forgereceive@forgejabber.com/pcp" from="forgesend" type="error">
[018:217] <error code="404" type="cancel">
[018:217] <remote-server-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
[018:217] </error></presence>
[018:218] RECV <<<<<<<<<<<<<<<<<<<<<<<<< : Thu Jul 5 14:17:15 2012
[018:218] <presence to="forgereceive@forgejabber.com/pcp" from="forgesend" type="error">
[018:218] <error code="404" type="cancel">
[018:218] <remote-server-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
[018:218] </error></presence>
[018:264] RECV <<<<<<<<<<<<<<<<<<<<<<<<< : Thu Jul 5 14:17:15 2012
[018:264] <iq type="result" id="3" to="forgereceive@forgejabber.com/pcp">
[018:264] <query xmlns="google:jingleinfo">
[018:264] <stun>
[018:264] <server host="stun.xten.net" udp="3478"/>
[018:264] <server host="jivesoftware.com" udp="3478"/>
[018:264] <server host="igniterealtime.org" udp="3478"/>
[018:264] <server host="stun.fwdnet.net" udp="3478"/>
[018:264] </stun>
[018:264] <publicip ip="65.101.207.121"/>
[018:264] </query></iq>
[018:420] RECV <<<<<<<<<<<<<<<<<<<<<<<<< : Thu Jul 5 14:17:15 2012
[018:420] <iq to="forgereceive@forgejabber.com/pcp" type="set" id="5" from="forgesend@forgejabber.com/pcp">
[018:420] <jingle xmlns="urn:xmpp:jingle:1" action="session-initiate" sid="3548650675" initiator="forgesend@forgejabber.com/pcp">
[018:420] <content name="securetunnel" creator="initiator">
[018:420] <description xmlns="http://www.google.com/talk/securetunnel">
[018:420] <type>recv:wineout.jpeg</type>
[018:420] <client-cert>--BEGIN CERTIFICATE--END CERTIFICATE--</client-cert>
[018:420] </description>
[018:420] <transport xmlns="http://www.google.com/transport/p2p"/>
[018:420] </content></jingle>
[018:420] <session xmlns="http://www.google.com/session" type="initiate" id="3548650675" initiator="forgesend@forgejabber.com/pcp">
[018:420] <description xmlns="http://www.google.com/talk/securetunnel">
[018:420] <type>recv:wineout.jpeg</type>
[018:420] <client-cert>--BEGIN CERTIFICATE--END CERTIFICATE--</client-cert>
[018:420] </description></session></iq>
[018:421] TunnelSessionClientBase::OnSessionCreate: received=1
[018:421] Session:3548650675 Old state:STATE_INIT New state:STATE_RECEIVEDINITIATE Type:http://www.google.com/talk/securetunnel Transport:http://www.google.com/transport/p2p
[018:421] TunnelSession::OnSessionState(Session::STATE_RECEIVEDINITIATE)
[018:421] SEND >>>>>>>>>>>>>>>>>>>>>>>>> : Thu Jul 5 14:17:15 2012
[018:421] <iq to="forgesend@forgejabber.com/pcp" id="5" type="result"/>
[018:465] RECV <<<<<<<<<<<<<<<<<<<<<<<<< : Thu Jul 5 14:17:15 2012
[018:465] <iq to="forgereceive@forgejabber.com/pcp" id="5" type="result" from="forgesend@forgejabber.com/pcp"/>
[198:665] RECV <<<<<<<<<<<<<<<<<<<<<<<<< : Thu Jul 5 14:20:15 2012
[198:665] <iq type="get" id="162-10" from="forgejabber.com" to="forgereceive@forgejabber.com/pcp">
[198:665] <ping xmlns="urn:xmpp:ping"/>
[198:665] /iq>
[198:665] SEND >>>>>>>>>>>>>>>>>>>>>>>>> : Thu Jul 5 14:20:15 2012
[198:665] <iq type="error" id="162-10" to="forgejabber.com">
[198:665] <ping xmlns="urn:xmpp:ping"/>
[198:665] <error code="501" type="cancel">
[198:665] <feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
[198:665] </error>
[198:665] </iq>
Отправитель:
[019:043] SEND >>>>>>>>>>>>>>>>>>>>>>>>> : Thu Jul 5 14:17:15 2012
[019:043] <iq type="get" id="3">
[019:043] <query xmlns="google:jingleinfo"/>
[019:043] </iq>
[019:043] SEND >>>>>>>>>>>>>>>>>>>>>>>>> : Thu Jul 5 14:17:15 2012
[019:043] <iq to="forgereceive@forgejabber.com/pcp" type="set" id="5">
[019:043] <jingle xmlns="urn:xmpp:jingle:1" action="session-initiate" sid="3548650675" initiator="forgesend@forgejabber.com/pcp">
[019:043] <content name="securetunnel" creator="initiator">
[019:043] <description xmlns="http://www.google.com/talk/securetunnel">
[019:043] <type>recv:wineout.jpeg</type>
[019:043] <client-cert>--BEGIN CERTIFICATE----END CERTIFICATE--</client-cert>
[019:043] </description>
[019:043] <transport xmlns="http://www.google.com/transport/p2p"/>
[019:043] </content>
[019:043] </jingle>
[019:043] <session xmlns="http://www.google.com/session" type="initiate" id="3548650675" initiator="forgesend@forgejabber.com/pcp">
[019:043] <description xmlns="http://www.google.com/talk/securetunnel">
[019:043] <type>recv:wineout.jpeg</type>
[019:043] <client-cert>--BEGIN CERTIFICATE--END CERTIFICATE--</client-cert>
[019:043] </description></session></iq>
[019:043] RECV <<<<<<<<<<<<<<<<<<<<<<<<< : Thu Jul 5 14:17:15 2012
[019:043] <presence to="forgesend@forgejabber.com/pcp" from="forgereceive" type="error">
[019:043] <error code="404" type="cancel">
[019:043] <remote-server-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
[019:043] </error></presence>
[019:044] RECV <<<<<<<<<<<<<<<<<<<<<<<<< : Thu Jul 5 14:17:15 2012
[019:044] <presence to="forgesend@forgejabber.com/pcp" from="forgereceive" type="error">
[019:044] <error code="404" type="cancel">
[019:044] <remote-server-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
[019:044] </error></presence>
[019:044] RECV <<<<<<<<<<<<<<<<<<<<<<<<< : Thu Jul 5 14:17:15 2012
[019:044] <iq to="forgesend@forgejabber.com/pcp" type="set" id="5" from="forgereceive@forgejabber.com/pcp">
[019:044] <jingle xmlns="urn:xmpp:jingle:1" action="session-initiate" sid="402024303" initiator="forgereceive@forgejabber.com/pcp">
[019:044] <content name="securetunnel" creator="initiator">
[019:044] <description xmlns="http://www.google.com/talk/securetunnel">
[019:044] <type>send:winein.jpeg</type>
[019:044] <client-cert>--BEGIN CERTIFICATE--END CERTIFICATE--</client-cert>
[019:044] </description>
[019:044] <transport xmlns="http://www.google.com/transport/p2p"/>
[019:044] </content></jingle>
[019:044] <session xmlns="http://www.google.com/session" type="initiate" id="402024303" initiator="forgereceive@forgejabber.com/pcp">
[019:044] <description xmlns="http://www.google.com/talk/securetunnel">
[019:044] <type>send:winein.jpeg</type>
[019:044] <client-cert>--BEGIN CERTIFICATE--END CERTIFICATE--</client-cert>
[019:044] </description></session></iq>
[019:044] TunnelSessionClientBase::OnSessionCreate: received=1
[019:044] Session:402024303 Old state:STATE_INIT New state:STATE_RECEIVEDINITIATE Type:http://www.google.com/talk/securetunnel Transport:http://www.google.com/transport/p2p
[019:044] TunnelSession::OnSessionState(Session::STATE_RECEIVEDINITIATE)
[019:044] SEND >>>>>>>>>>>>>>>>>>>>>>>>> : Thu Jul 5 14:17:15 2012
[019:044] <iq to="forgereceive@forgejabber.com/pcp" id="5" type="result"/>
[019:088] RECV <<<<<<<<<<<<<<<<<<<<<<<<< : Thu Jul 5 14:17:15 2012
[019:088] <iq type="result" id="3" to="forgesend@forgejabber.com/pcp">
[019:088] <query xmlns="google:jingleinfo">
[019:088] <stun>
[019:088] <server host="stun.xten.net" udp="3478"/>
[019:088] <server host="jivesoftware.com" udp="3478"/>
[019:088] <server host="igniterealtime.org" udp="3478"/>
[019:088] <server host="stun.fwdnet.net" udp="3478"/>
[019:088] </stun>
[019:088] <publicip ip="65.101.207.121"/>
[019:088] </query>
[019:088] </iq>
[019:183] RECV <<<<<<<<<<<<<<<<<<<<<<<<< : Thu Jul 5 14:17:15 2012
[019:183] <iq to="forgesend@forgejabber.com/pcp" id="5" type="result" from="forgereceive@forgejabber.com/pcp"/>
[199:381] RECV <<<<<<<<<<<<<<<<<<<<<<<<< : Thu Jul 5 14:20:15 2012
[199:381] <iq type="get" id="474-11" from="forgejabber.com" to="forgesend@forgejabber.com/pcp">
[199:381] <ping xmlns="urn:xmpp:ping"/>
[199:381] </iq>
[199:381] SEND >>>>>>>>>>>>>>>>>>>>>>>>> : Thu Jul 5 14:20:15 2012
[199:381] <iq type="error" id="474-11" to="forgejabber.com">
[199:381] <ping xmlns="urn:xmpp:ping"/>
[199:381] <error code="501" type="cancel">
[199:381] <feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
[199:382] </error></iq>
После этой публикации у меня произошел сбой XMPP. Это сделало эту ошибку до неприличия простой / очевидной. Для будущих людей, которые могут столкнуться с этой ошибкой, причина ошибки заключается в том, что Libjingle не имеет реализации для функции pining XMPP и, следовательно, не знает, как обрабатывать запрос ping от сервера XMPP / Jabber. Поскольку два клиента никогда не устанавливали правильный метод передачи файлов (ошибка моего выполнения кода), они просто сидели и ждали, пока что-то произойдет, что заставило сервер в конечном итоге спросить, были ли они еще там.