方法

GioTlsConnectionset_require_close_notify

自:2.28

声明 [源]

void
g_tls_connection_set_require_close_notify (
  GTlsConnection* conn,
  gboolean require_close_notify
)

描述 [源]

设置连接是否在网络连接关闭前期望收到适当的TLS关闭通知。如果这是TRUE(默认值),则连接将在关闭前期望从其对等方收到TLS关闭通知,如果连接未收到适当的通知而关闭,将返回一个G_TLS_ERROR_EOF错误(因为这可能表明网络错误或中间人攻击)。

在某些协议中,应用程序将以应用级数据为基础了解连接是否干净地关闭(因为应用级数据包括长度字段或以某种方式自限界);在这种情况下,关闭通知是多余的,有时会省略。(TLS 1.1明确允许这样做;在TLS 1.0中,技术上是一个错误,但通常仍然这样做。)您可以使用g_tls_connection_set_require_close_notify()告诉conn允许一个“未宣布”的连接关闭,在这种情况下,关闭将显示为0长度的读取,就像非TLS的GSocketConnection一样,此时需要应用程序检查数据是否已全部接收。

请注意,这只会影响对等方关闭连接时的行为;当应用程序在conn上调用g_io_stream_close()自身时,这会发送一个关闭通知,而不管此属性的设置如何。如果您明确想要进行不干净的关闭,您应该关闭connGTlsConnection:base-io-stream而不是关闭conn本身,但请注意,这只在没有其他操作在conn或基本I/O流上挂起时才能这样做。

自:2.28

参数

require_close_notify

类型: gboolean

是否要求关闭通知。