From 430215be2a18ee1cf703532e9490e80ddec45420 Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Fri, 3 Jul 2009 14:28:32 -0300 Subject: [PATCH] Handle close event in SSL layer watch. --- hcconn_ssl.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/hcconn_ssl.c b/hcconn_ssl.c index 5956acc..d4fa465 100644 --- a/hcconn_ssl.c +++ b/hcconn_ssl.c @@ -158,18 +158,23 @@ hc_conn_ssl_watch (HCConn *conn, HCEvent event, gpointer data) HCConn *ssl_conn = data; struct ssl_data *ssl = ssl_conn->layer; int r; - if (event != HC_EVENT_READ) - return; - if (ssl->handshaking) + switch (event) { - ssl_server_handshake (ssl); - return; + case HC_EVENT_READ: + if (ssl->handshaking) + { + ssl_server_handshake (ssl); + return; + } + while ((r = hc_conn_read (ssl->lowconn, buffer, sizeof (buffer))) > 0) + g_string_append_len (ssl->buffer, buffer, r); + if (ssl_conn->func && !ssl->handshaking) + ssl_conn->func (ssl_conn, event, ssl_conn->data); + break; + case HC_EVENT_CLOSE: + if (ssl_conn->func) + ssl_conn->func (ssl_conn, event, ssl_conn->data); } - while ((r = hc_conn_read (ssl->lowconn, buffer, sizeof (buffer))) > 0) - g_string_append_len (ssl->buffer, buffer, r); - if (ssl_conn->func && !ssl->handshaking) - ssl_conn->func (ssl_conn, event, ssl_conn->data); - return; } void -- 2.20.1