# HG changeset patch # User Matti Hamalainen # Date 1400557812 -10800 # Node ID 2cd71b7c1e8e2da482e5c254adc9f063479d2697 # Parent 59588bbf8d554b946a93bee128e21c078ef4bdd2 Repurpose nn_conn_close() to only close the socket, but not free the connection structure. Add new function nn_conn_free() to do the freeing (also calls nn_conn_close()). diff -r 59588bbf8d55 -r 2cd71b7c1e8e main.c --- a/main.c Tue May 20 06:20:43 2014 +0300 +++ b/main.c Tue May 20 06:50:12 2014 +0300 @@ -2226,7 +2226,7 @@ printMsg(currWin, "Could not get policy probe.\n"); } } - nn_conn_close(conn); + nn_conn_free(conn); #endif // Okay, now do the proper connection ... @@ -2352,7 +2352,7 @@ #endif th_free(optUserNameEnc); - nn_conn_close(conn); + nn_conn_free(conn); nn_network_close(); THMSG(1, "Connection terminated.\n"); diff -r 59588bbf8d55 -r 2cd71b7c1e8e network.c --- a/network.c Tue May 20 06:20:43 2014 +0300 +++ b/network.c Tue May 20 06:50:12 2014 +0300 @@ -361,15 +361,15 @@ return 0; error: - conn->status = NN_CONN_CLOSED; + nn_conn_close(conn); return -2; } -void nn_conn_close(nn_conn_t *conn) +int nn_conn_close(nn_conn_t *conn) { if (conn == NULL) - return; + return -1; if (conn->socket >= 0) { @@ -381,12 +381,20 @@ conn->socket = -1; } - th_free(conn->host); - th_free(conn->proxy.host); + conn->status = NN_CONN_CLOSED; + return 0; +} + - conn->status = NN_CONN_CLOSED; - - th_free(conn); +void nn_conn_free(nn_conn_t *conn) +{ + if (conn != NULL) + { + nn_conn_close(conn); + th_free(conn->host); + th_free(conn->proxy.host); + th_free(conn); + } } diff -r 59588bbf8d55 -r 2cd71b7c1e8e network.h --- a/network.h Tue May 20 06:20:43 2014 +0300 +++ b/network.h Tue May 20 06:50:12 2014 +0300 @@ -109,7 +109,8 @@ int nn_conn_set_proxy(nn_conn_t *conn, int type, int port, const char *host, int auth_type); int nn_conn_set_proxy_auth_user(nn_conn_t *conn, const char *userid, const char *passwd); int nn_conn_open(nn_conn_t *conn, const int port, const char *host); -void nn_conn_close(nn_conn_t *); +int nn_conn_close(nn_conn_t *); +void nn_conn_free(nn_conn_t *); void nn_conn_reset(nn_conn_t *); int nn_conn_pull(nn_conn_t *); BOOL nn_conn_send_buf(nn_conn_t *, const char *buf, const size_t len);