diff --git a/.idea/misc.xml b/.idea/misc.xml
index a424e87..d425695 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -7,4 +7,5 @@
+
\ No newline at end of file
diff --git a/data.c b/data.c
index 9de6e52..5cda321 100644
--- a/data.c
+++ b/data.c
@@ -92,7 +92,7 @@ char *char_array_get_until_char(char_array_t *array, char c) {
};
char *char_array_get_bytes(char_array_t *array, size_t length) {
- if (length < array->size) {
+ if (length > array->size) {
return NULL;
}
diff --git a/server02.c b/server02.c
index 142bafc..fb42aea 100644
--- a/server02.c
+++ b/server02.c
@@ -32,11 +32,12 @@ void *handle_connection(void *args) {
char_array_t *data = char_array_create(1024);
price_array_t *prices = price_array_create(1024);
while ((bytesReceived = recv(handleArgs->client, buffer, sizeof(buffer), 0)) > 0) {
- printf("Client sent {%d}: |%d| \n", handleArgs->connection, bytesReceived);
+ printf("{%d} Client sent: |%d| \n", handleArgs->connection, bytesReceived);
char_array_append(data, buffer, bytesReceived);
- query_or_insert_t *request;
- while ((request = fix_message(char_array_get_bytes(data, 9))) != NULL) {
+ char *raw_request;
+ while ((raw_request = char_array_get_bytes(data, 9)) != NULL) {
//parse_request(handleArgs, request, data);
+ query_or_insert_t *request = fix_message(raw_request);
switch (request->insert.type) {
case INSERT:
printf("{%d} timestamp: %d, price: %d\n", handleArgs->connection, request->insert.timestamp, request->insert.price);
@@ -48,13 +49,15 @@ void *handle_connection(void *args) {
printf("{%d} Query min: %d, max: %d avg %d\n", handleArgs->connection, request->query.mintime, request->query.maxtime, average);
int32_t response = htonl(average);
send(handleArgs->client, (char*)&response, sizeof(response), 0);
+ break;
default:
closesocket(handleArgs->client);
free(handleArgs);
pthread_exit(NULL);
exit(3);
}
- // free(request);
+ free(request);
+ free(raw_request);
}
memset(buffer, 0, sizeof(buffer));
}
@@ -64,6 +67,8 @@ void *handle_connection(void *args) {
pthread_exit(NULL);
}
+
+
query_or_insert_t *fix_message(char *message) {
if (message == NULL) {
return NULL;