Mercurial > hg > nnchat
comparison network.c @ 613:2cd71b7c1e8e
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()).
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 20 May 2014 06:50:12 +0300 |
parents | 019a54b07f60 |
children | 1fc22e8efd26 |
comparison
equal
deleted
inserted
replaced
612:59588bbf8d55 | 613:2cd71b7c1e8e |
---|---|
359 nn_conn_reset(conn); | 359 nn_conn_reset(conn); |
360 conn->status = NN_CONN_OPEN; | 360 conn->status = NN_CONN_OPEN; |
361 return 0; | 361 return 0; |
362 | 362 |
363 error: | 363 error: |
364 conn->status = NN_CONN_CLOSED; | 364 nn_conn_close(conn); |
365 return -2; | 365 return -2; |
366 } | 366 } |
367 | 367 |
368 | 368 |
369 void nn_conn_close(nn_conn_t *conn) | 369 int nn_conn_close(nn_conn_t *conn) |
370 { | 370 { |
371 if (conn == NULL) | 371 if (conn == NULL) |
372 return; | 372 return -1; |
373 | 373 |
374 if (conn->socket >= 0) | 374 if (conn->socket >= 0) |
375 { | 375 { |
376 #ifdef __WIN32 | 376 #ifdef __WIN32 |
377 closesocket(conn->socket); | 377 closesocket(conn->socket); |
379 close(conn->socket); | 379 close(conn->socket); |
380 #endif | 380 #endif |
381 conn->socket = -1; | 381 conn->socket = -1; |
382 } | 382 } |
383 | 383 |
384 th_free(conn->host); | |
385 th_free(conn->proxy.host); | |
386 | |
387 conn->status = NN_CONN_CLOSED; | 384 conn->status = NN_CONN_CLOSED; |
388 | 385 return 0; |
389 th_free(conn); | 386 } |
387 | |
388 | |
389 void nn_conn_free(nn_conn_t *conn) | |
390 { | |
391 if (conn != NULL) | |
392 { | |
393 nn_conn_close(conn); | |
394 th_free(conn->host); | |
395 th_free(conn->proxy.host); | |
396 th_free(conn); | |
397 } | |
390 } | 398 } |
391 | 399 |
392 | 400 |
393 BOOL nn_conn_send_buf(nn_conn_t *conn, const char *buf, const size_t len) | 401 BOOL nn_conn_send_buf(nn_conn_t *conn, const char *buf, const size_t len) |
394 { | 402 { |