X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=hcconn_ssl.c;h=f1e98fb5b683bde48b3a6c837c85bd43281c5154;hb=b04c36b70e9f143f953ae004753ba1fd3197fa51;hp=57fa9ab8a18826d77585d8bd7b85df1f71b10396;hpb=14e00ebddd362c7a5d1acdf36116426778085ffb;p=cascardo%2Frnetproxy.git diff --git a/hcconn_ssl.c b/hcconn_ssl.c index 57fa9ab..f1e98fb 100644 --- a/hcconn_ssl.c +++ b/hcconn_ssl.c @@ -140,15 +140,16 @@ ssl_pull (gnutls_transport_ptr_t ptr, void *buffer, size_t len) } if (r == 0) { - gnutls_transport_set_global_errno (EAGAIN); + errno = (EAGAIN); return -1; } return r; } static void -ssl_server_handshake (struct ssl_data *ssl) +ssl_server_handshake (HCConn *conn) { + struct ssl_data *ssl = conn->layer; int error; if ((error = gnutls_handshake (ssl->session)) < 0) { @@ -162,6 +163,8 @@ ssl_server_handshake (struct ssl_data *ssl) else { ssl->handshaking = FALSE; + if (conn->func) + conn->func (conn, HC_EVENT_CONNECT, conn->data); } } @@ -173,7 +176,7 @@ ssl_server_connect (HCConn *conn) gnutls_transport_set_push_function (ssl->session, ssl_push); gnutls_transport_set_pull_function (ssl->session, ssl_pull); ssl->handshaking = TRUE; - ssl_server_handshake (ssl); + ssl_server_handshake (conn); } static void @@ -214,7 +217,7 @@ hc_conn_ssl_watch (HCConn *conn, HCEvent event, gpointer data) case HC_EVENT_READ: if (ssl->handshaking) { - ssl_server_handshake (ssl); + ssl_server_handshake (ssl_conn); /* FIXME: create HC_CONN_ERROR */ if (ssl->failed && ssl_conn->func) ssl_conn->func (ssl_conn, HC_EVENT_CLOSE, ssl_conn->data); @@ -259,3 +262,11 @@ hc_conn_set_driver_ssl_server (HCConn *conn, HCConn *lowconn) { return hc_conn_set_driver_ssl (conn, lowconn, 1); } + +void +hc_conn_ssl_server_set_priority (HCConn *conn, char *priority) +{ + struct ssl_data *ssl; + ssl = conn->layer; + gnutls_priority_set_direct (ssl->session, priority, NULL); +}