diff options
author | mrfoxygmfr <mrfoxygmfr@sch9.ru> | 2025-05-21 02:34:09 +0300 |
---|---|---|
committer | mrfoxygmfr <mrfoxygmfr@sch9.ru> | 2025-05-21 02:34:09 +0300 |
commit | ba7a95160a1ead9023caa6b226ac4146ff62c2c0 (patch) | |
tree | 93aa3bd301ce7e818f7080708effeb487bb196ea | |
parent | 6416c8feecc760807f4edf5d9c8e8be9c2df8981 (diff) |
fix(lib/net): memory leaks and error messages
-rw-r--r-- | lib/net/client.c | 2 | ||||
-rw-r--r-- | lib/net/server.c | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/lib/net/client.c b/lib/net/client.c index 10d84b1..4150398 100644 --- a/lib/net/client.c +++ b/lib/net/client.c @@ -14,6 +14,8 @@ conn_t* client_connect_to_server(const char* addr, const char* port) { struct sockaddr_in* conn_addr = get_addr(addr, port); if (connect(conn->conn_socket_fd, conn_addr, sizeof(*conn_addr)) == -1) { + free(conn_addr); + if (errno == ECONNREFUSED) { close(conn->conn_socket_fd); free(conn); diff --git a/lib/net/server.c b/lib/net/server.c index a81a1d3..48213fb 100644 --- a/lib/net/server.c +++ b/lib/net/server.c @@ -21,6 +21,7 @@ server_t* server_init_tcp(const char* addr, const char* port) { struct sockaddr_in* listen_addr = get_addr(addr, port); if (bind(srv->listen_socket_fd, (struct sockaddr*) listen_addr, sizeof(*listen_addr)) == -1) { + free(listen_addr); fprintf(stderr, "[server_init_tcp] Unable to bind\n"); exit(EXIT_FAILURE); } @@ -34,7 +35,7 @@ server_t* server_init_tcp(const char* addr, const char* port) { struct linger linger_params = {.l_onoff = 1, .l_linger = 1}; if (setsockopt(srv->listen_socket_fd, SOL_SOCKET, SO_LINGER, &linger_params, sizeof(linger_params)) == -1) { - fprintf(stderr, "[conn_try_accept] Unable to modify SO_LINGER socket option\n"); + fprintf(stderr, "[server_init_tcp] Unable to modify SO_LINGER socket option\n"); exit(EXIT_FAILURE); } @@ -83,6 +84,6 @@ conn_t* conn_try_accept(server_t* srv) { exit(EXIT_FAILURE); } - printf("[conn_try_accept] new client connected\n"); + printf("[conn_accept] new connection!\n"); return conn; } |