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 {