Назад | Перейти на главную страницу

Ошибка 501 во время Libjingle PCP на Amazon EC2, работающем с Openfire

Я пытаюсь реализовать 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. Поскольку два клиента никогда не устанавливали правильный метод передачи файлов (ошибка моего выполнения кода), они просто сидели и ждали, пока что-то произойдет, что заставило сервер в конечном итоге спросить, были ли они еще там.