0

この質問は少しトリッキーで、答えが見つかるとは思えませんが、とにかく試してみます。

XMPP 転送に Gloox を使用して C++ プログラムを作成しています。私のコンピューター(Linux Mint 13 MATE 32ビット)でのみ発生している私の問題は、「onConnect()」ハンドラーが呼び出されないことです。これは、jabber.org サーバーを使用していたときは問題ありませんでしたが (実際には、それが呼び出されていないことさえ知りませんでした...)、LAN ejabberd サーバーをインストールすると問題が発生し始めました。

jabber.org サーバーを使用すると、「onConnect」が呼び出されなくても、アプリケーションはメッセージを正常に送受信できました。しかし、ejabberd ではありません。最初は証明書か何かの問題だと思っていましたが、他の Linux ボックス (Ubuntu 12.04 x64、Arch x64、Debian 6.0 32 (サーバーはこのマシンで実行されています)) で試してみたところ、どのマシンでも問題なく動作しました。それらのコンピューター。さらに、Python-Twisted を使用する姉妹アプリケーションは、問題のあるコンピューターで問題なく接続できます。

検証関数 onTLSConnect() は毎回呼び出され、true を返します。問題のあるコンピューターでは、ejabberd サーバーを使用すると、その後接続が確立されず、約 25 秒後にソケットが自動的に閉じます (そして onDisconnect() が呼び出されます...)

それで、私の質問: Gloox が接続を終了するのを妨げているインターネット設定 (ファイアウォールなど) が存在する可能性があります。または、誰かが同様の問題を経験しましたか? ありがとう!

編集: ラップトップで Mint 13 MATE 32 ビットの VM を作成しましたが、同じ問題が発生します。これで、ミントのどこかにバグがあると結論付けることができます。

EDIT2:Mint 64ビットで正常に動作します....Mintのバグページでチケットを開きました

4

1 に答える 1

1

先週この問題に遭遇しました。gloox のバグのようです。32ビットLinuxで発生しました。これを参照してください https://bugs.launchpad.net/linuxmint/+bug/1071416

実際、あなたはサーバー上で「オンライン」ですが、「プレゼンス」状態は不明です。「チャット」状態をサーバーに送信するだけで、作業を続行できます。

このような

#ifdef GLOOX_ON_CONNECT_BUG_PATCH
    Poco::Thread::sleep(3000);//休息3秒,然后连接成功,哎,该死的bug
    this->is_connected = true;
    client->setPresence(Presence::Chat, 0);
#endif
于 2013-08-08T02:57:12.617 に答える