diff options
author | dequis <dx@dxzone.com.ar> | 2015-10-26 05:18:51 -0300 |
---|---|---|
committer | dequis <dx@dxzone.com.ar> | 2015-10-26 05:28:10 -0300 |
commit | 0db66186f49438ae9c2f73ca85b915e999896309 (patch) | |
tree | e79f3ef3e17866ed19415f877b8526b920b7c85b /lib | |
parent | 4e365cec5275e3dec782af3ec0bc9a651cc2b831 (diff) |
Use proxy_disconnect() in http, ssl, jabber, oscar
Twitter and MSN are all HTTP/SSL, so they don't need it either.
The out of tree facebook and steam plugins are also covered by the
HTTP/SSL changes.
Yahoo is written in a weird way and doesn't seem to need it (it seems it
doesn't immediately stop connections when you tell it to logout)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/http_client.c | 2 | ||||
-rw-r--r-- | lib/ssl_gnutls.c | 2 | ||||
-rw-r--r-- | lib/ssl_nss.c | 6 | ||||
-rw-r--r-- | lib/ssl_openssl.c | 4 |
4 files changed, 8 insertions, 6 deletions
diff --git a/lib/http_client.c b/lib/http_client.c index 9110b70a..2369d018 100644 --- a/lib/http_client.c +++ b/lib/http_client.c @@ -699,7 +699,7 @@ void http_close(struct http_request *req) if (req->ssl) { ssl_disconnect(req->ssl); } else { - closesocket(req->fd); + proxy_disconnect(req->fd); } http_free(req); diff --git a/lib/ssl_gnutls.c b/lib/ssl_gnutls.c index 2d52db52..d7200951 100644 --- a/lib/ssl_gnutls.c +++ b/lib/ssl_gnutls.c @@ -454,7 +454,7 @@ void ssl_disconnect(void *conn_) gnutls_bye(conn->session, GNUTLS_SHUT_WR); } - closesocket(conn->fd); + proxy_disconnect(conn->fd); if (conn->session) { gnutls_deinit(conn->session); diff --git a/lib/ssl_nss.c b/lib/ssl_nss.c index 09e50f3f..78121a4e 100644 --- a/lib/ssl_nss.c +++ b/lib/ssl_nss.c @@ -225,8 +225,8 @@ ssl_connected_failure: if (conn->prfd) { PR_Close(conn->prfd); - } - if (source >= 0) { + } else if (source >= 0) { + /* proxy_disconnect() would be redundant here */ closesocket(source); } g_free(conn->hostname); @@ -304,6 +304,8 @@ void ssl_disconnect(void *conn_) if (conn->prfd) { PR_Close(conn->prfd); + } else if (conn->fd) { + proxy_disconnect(conn->fd); } g_free(conn->hostname); diff --git a/lib/ssl_openssl.c b/lib/ssl_openssl.c index c286d509..38ce0598 100644 --- a/lib/ssl_openssl.c +++ b/lib/ssl_openssl.c @@ -130,7 +130,7 @@ static gboolean ssl_connected(gpointer data, gint source, b_input_condition cond /* Right now we don't have any verification functionality for OpenSSL. */ conn->func(conn->data, 1, NULL, cond); if (source >= 0) { - closesocket(source); + proxy_disconnect(source); } ssl_conn_free(conn); @@ -275,7 +275,7 @@ void ssl_disconnect(void *conn_) SSL_shutdown(conn->ssl); } - closesocket(conn->fd); + proxy_disconnect(conn->fd); ssl_conn_free(conn); } |