gpt4 book ai didi

ssl - Strophe 不可恢复的 TLS 错误

转载 作者:太空宇宙 更新时间:2023-11-03 13:41:16 28 4
gpt4 key购买 nike

我正在使用 libstrophe 在 C 中开发一个简单的 ejabberd 客户端。它连接并开始按预期处理消息。

但是,一段时间后(来自 ejabberd 服务器的两三个 ping),我的连接关闭并且状态设置为 DISCONNECTED。下面是调试行的尾部:

xmpp DEBUG Unrecoverable TLS error, 5. 
xmpp DEBUG Closing socket.
DEBUG: disconnected event DEBUG Stopping event loop.
event DEBUG Event
oop completed.

我初始化并连接如下。

xmpp_initialize();

/* read connection params */
if( set_xmpp_conn_params( &conn_params ) < 0 ) {
fprintf(stderr, "Could not retrieve connection params from %s\n",
SERVER_CONF_FILE);
return -1;
}

/* initialize the XMPP logger */
xmpp_log = xmpp_get_default_logger(XMPP_LOG_LEVEL);
xmpp_ctx = xmpp_ctx_new(NULL, xmpp_log);

/* create a connection */
xmpp_conn = xmpp_conn_new(xmpp_ctx);

/* login */
xmpp_conn_set_jid(xmpp_conn, conn_params.jid);
xmpp_conn_set_pass(xmpp_conn, conn_params.password);

/* create a client */
xmpp_connect_client( xmpp_conn, conn_params.host, 0,
agent_conn_handler, xmpp_ctx );

/* enter the event loop */
xmpp_run( xmpp_ctx );

/* the code below is executed
whenever connection handler @agent_conn_handler exits */

/* release the connection and context */
xmpp_conn_release(xmpp_conn);
xmpp_ctx_free(xmpp_ctx);

为什么我会收到 TLS 错误消息?

谢谢。

最佳答案

错误 5 是 SSL_ERROR_SYSCALL。 OpenSSL docs说:

Some I/O error occurred. The OpenSSL error queue may contain more information on the error. If the error queue is empty (i.e. ERR_get_error() returns 0), ret can be used to find out more about the error: If ret == 0, an EOF was observed that violates the protocol. If ret == -1, the underlying BIO reported an I/O error (for socket I/O on Unix systems, consult errno for details).

实际上,这可能意味着服务器出于某种原因断开了您的连接。我建议使用 WireShark 进行数据包跟踪获取更多信息。例如,当客户端提供 TLS 版本 1.1 时,我们已经看到这种情况发生在使用 TLS 的 RSA 库的服务器上。

关于ssl - Strophe 不可恢复的 TLS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21875955/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com