diff --git a/include/tdbms.h b/include/tdbms.h index 53d1cd7..c411d72 100644 --- a/include/tdbms.h +++ b/include/tdbms.h @@ -9,6 +9,9 @@ extern "C" { #endif +// ASCII End Of Transmission code +#define EOT 4 + // TDBMS request codes enum TRC { trc_db_stats = 0b0, diff --git a/tdbms/client/tdbms-client.c b/tdbms/client/tdbms-client.c index 6e080ab..2be76ec 100644 --- a/tdbms/client/tdbms-client.c +++ b/tdbms/client/tdbms-client.c @@ -57,6 +57,7 @@ char *tdb_query(int socket_fd, const char *db_name, char request_code, const cha buffer += nwrite; req_size -= nwrite; if (req_size == 0) { + nwrite = write(socket_fd, "\4", 1); break; } } @@ -75,7 +76,7 @@ char *tdb_query(int socket_fd, const char *db_name, char request_code, const cha } memcpy(response + offset, buffer, nread); offset += nread; - if (response[offset - 1] == 0) { + if (response[offset - 1] == EOT) { break; } } diff --git a/tdbms/server/tdbms-server.c b/tdbms/server/tdbms-server.c index e797ba1..4ca9166 100644 --- a/tdbms/server/tdbms-server.c +++ b/tdbms/server/tdbms-server.c @@ -836,7 +836,7 @@ void *client_thread(void *arg) { } memcpy(request + offset, buffer, nread); offset += nread; - if (request[offset - 1] == 0) { + if (request[offset - 1] == EOT) { break; } } @@ -860,6 +860,7 @@ void *client_thread(void *arg) { buf += nwrite; resp_size -= nwrite; if (resp_size == 0) { + nwrite = write(client_fd, "\4", 1); break; } }