这个问题有点棘手,我真的不认为我会找到答案,但无论如何我都会尝试。
我正在编写一个使用 gloox 进行 XMPP 传输的 C++ 程序。我的问题(仅在我的计算机上发生)(Linux Mint 13 MATE 32bits)是永远不会调用“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 32bits 的 VM,并且出现了同样的问题。我现在可以得出结论,这是薄荷中某个地方的错误。
EDIT2:在 Mint 64 位上运行良好....我在 Mint 的错误页面上打开了一张票