diff options
Diffstat (limited to 'src/server')
-rw-r--r-- | src/server/binding.c | 7 | ||||
-rw-r--r-- | src/server/server.c | 3 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/server/binding.c b/src/server/binding.c index 157d1d4..c643ee5 100644 --- a/src/server/binding.c +++ b/src/server/binding.c @@ -117,16 +117,17 @@ static bool read_tcp(Connection* connection, Packet* packet) { &connection->sock.tcp, &len, sizeof(uint16_t) - ) < 0) { + ) < 2) { return false; } + len = ntohs(len); uint8_t buffer[len]; - if ( read_tcp_stream( + if (read_tcp_stream( &connection->sock.tcp, buffer, len - ) < 0) { + ) < len) { return false; } diff --git a/src/server/server.c b/src/server/server.c index 27cc9d9..f96fac0 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -91,6 +91,7 @@ static void* server_listen(void* arg) { free_connection(&connection); continue; } + pthread_detach(thread); } return NULL; @@ -120,6 +121,8 @@ void server_run(Server* server) { pthread_join(udp, NULL); pthread_join(tcp, NULL); + + pthread_exit(0); } void server_free(Server* server) { |