From e480ce7efc6538f18df14926ec35dd666c320cc0 Mon Sep 17 00:00:00 2001
From: Abhisha Nirmalathas <a.nirmalathas1@student.unimelb.edu.au>
Date: Fri, 19 Apr 2019 13:19:16 +1000
Subject: [PATCH] bug fix, keyword print

---
 hashtable.c     |  24 +++++++++++++++++++++---
 hashtable.h     |   4 +++-
 hashtable.o     | Bin 13112 -> 0 bytes
 http-parser.o   | Bin 6992 -> 0 bytes
 http-response.c |  11 +++++++----
 http-response.h |   1 +
 http-response.o | Bin 7480 -> 0 bytes
 http-server.c   |  15 ++++++++++++++-
 http-server.o   | Bin 29096 -> 0 bytes
 server          | Bin 14480 -> 0 bytes
 user.c          |  15 +++++++++++++++
 user.h          |   3 +++
 user.o          | Bin 14288 -> 0 bytes
 13 files changed, 64 insertions(+), 9 deletions(-)
 delete mode 100644 hashtable.o
 delete mode 100644 http-parser.o
 delete mode 100644 http-response.o
 delete mode 100644 http-server.o
 delete mode 100644 server
 delete mode 100644 user.o

diff --git a/hashtable.c b/hashtable.c
index 14c6890..a02d701 100644
--- a/hashtable.c
+++ b/hashtable.c
@@ -139,7 +139,8 @@ void move_to_front(Bucket *bucket, int index){
 /************************************************************************/
 char* hash_table_get(HashTable *table, char *key) {
 	/*Checks if key in hash table and returns value if present*/
-	char* freq = malloc(60*sizeof(char));
+	char* freq = calloc(60,sizeof(char));
+	assert(freq);
 	assert(table != NULL);
 	assert(key != NULL);
 
@@ -149,7 +150,7 @@ char* hash_table_get(HashTable *table, char *key) {
 	Bucket *bucket = &table->buckets[hash_value];
 	for (int i=0; i < bucket->n_elems; i++){
 		if (equal(bucket->keys[i], key)){
-			freq = bucket->values[i];
+			memcpy(freq, bucket->values[i], strlen(bucket->values[i]));
 			move_to_front(bucket, i);
 			break;
 		}
@@ -175,7 +176,8 @@ bool hash_table_has(HashTable *table, char *key) {
 	return false;
 }
 char* print_hash_map(HashTable *table){
-	char* headers = malloc(100*sizeof(char));
+	char* headers = calloc(100,sizeof(char));
+	assert(headers);
 	for (int i = 0; i < table->size; i++) {
 		if (table->buckets[i].n_elems > 0){
 			for (int j=0; j< table->buckets[i].n_elems; j++){
@@ -186,4 +188,20 @@ char* print_hash_map(HashTable *table){
 		}
 	}
 	return headers;
+}
+
+void free_cookie(HashTable *headers) {
+	/*Checks if key in hash table and returns value if present*/
+
+	assert(headers != NULL);
+
+	int hash_value = xor_hash("Set-cookie: ", headers->size);
+
+	// look for existing key
+	Bucket *bucket = &headers->buckets[hash_value];
+	for (int i=0; i < bucket->n_elems; i++){
+		if (equal(bucket->keys[i], "Set-cookie: ")){
+			free(bucket->values[i]);
+		}
+	}
 }
\ No newline at end of file
diff --git a/hashtable.h b/hashtable.h
index eb041bf..4f50386 100644
--- a/hashtable.h
+++ b/hashtable.h
@@ -23,4 +23,6 @@ char* hash_table_get(HashTable *table, char *key);
 //Checks if the key exists in hash table
 bool hash_table_has(HashTable *table, char *key);
 
-char* print_hash_map(HashTable *table);
\ No newline at end of file
+char* print_hash_map(HashTable *table);
+
+void free_cookie(HashTable *headers);
\ No newline at end of file
diff --git a/hashtable.o b/hashtable.o
deleted file mode 100644
index 006163fa4be2a66e79f11cc80bcc1cee4acdae9b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 13112
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
ShAfZ;a8b}=3nUH$0|Nj?i<aR4

diff --git a/http-parser.o b/http-parser.o
deleted file mode 100644
index feeecba7d45e8a54a1ce6497414c0d2ab8aca3bd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6992
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

diff --git a/http-response.c b/http-response.c
index ae80e7e..679a02d 100644
--- a/http-response.c
+++ b/http-response.c
@@ -27,8 +27,8 @@ Response* initialise_session(Request* request){
     resp->version = request->version;
     resp->phrase = "OK";
     resp->header = new_hash_table(2);
-    char *cook = cookie_generator();
-    hash_table_put(resp->header, "Set-cookie: ", cook);
+    char *cookie = cookie_generator();
+    hash_table_put(resp->header, "Set-cookie: ", cookie);
     resp->body="";
     return resp;
 }
@@ -44,14 +44,17 @@ char* parse_response(Response* response){
     strcat(response_string, " ");
     strcat(response_string, response->phrase);
     strcat(response_string, "\r\n");
-    strcat(response_string, print_hash_map(response->header));
+    char* headers = print_hash_map(response->header);
+    memcpy(response_string, headers, strlen(headers));
     strcat(response_string, "\r\n");
     strcat(response_string, response->body);
+    free(headers);
     return response_string;
 }
 
 
 void free_response(Response* resp){
+    free_cookie(resp->header);
     free_hash_table(resp->header);
     free(resp);
-}
\ No newline at end of file
+}
diff --git a/http-response.h b/http-response.h
index adbcb3a..11a55c2 100644
--- a/http-response.h
+++ b/http-response.h
@@ -17,5 +17,6 @@ char* parse_response(Response* response);
 
 char* cookie_generator();
 
+void free_response(Response* resp);
 
 Response* initialise_session(Request* request);
\ No newline at end of file
diff --git a/http-response.o b/http-response.o
deleted file mode 100644
index 57bc34d925ed688f24eeacd72ac0ac1abd5bdbdb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7480
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

diff --git a/http-server.c b/http-server.c
index 3c3eca7..efd66f0 100644
--- a/http-server.c
+++ b/http-server.c
@@ -22,8 +22,14 @@
 #include <unistd.h>
 #include "http-parser.h"
 #include "http-response.h"
+#include "hashtable.h"
 #include "user.h"
 
+#define ROUND_1 3
+#define ROUND_2 4
+#define ROUND_3 1
+#define ROUND_4 2
+
 // constants
 static char const * const HTTP_200_FORMAT = "HTTP/1.1 200 OK\r\n\
 Content-Type: text/html\r\n\
@@ -33,6 +39,8 @@ static int const HTTP_400_LENGTH = 47;
 static char const * const HTTP_404 = "HTTP/1.1 404 Not Found\r\nContent-Length: 0\r\n\r\n";
 static int const HTTP_404_LENGTH = 45;
 
+
+
 char *substring(char *string, int position, int length)
 {
    char *p;
@@ -287,8 +295,13 @@ static bool handle_http_request(int sockfd, User_list *users)
             // char* resp_string = parse_response(resp);
             // printf("COOKIE CREATING RESP %s\n", resp_string);
             // player_session(buff, sockfd, "1_welcome.html", resp_string);
+            // User* new_player = new_user(sockfd);
+            // add_user(new_player, users);
+            // char* cookie = hash_table_get(resp->header, "Set-cookie: ")+13;
+            // cookie = strtok(cookie, ";");
+            // printf("the cookie token is %s*****\n", cookie);
             // free(resp_string);
-            // free(resp); 
+            // free_response(resp); 
             User* new_player = new_user(sockfd);
             add_user(new_player, users);
             get_request(buff,sockfd, "1_welcome.html");
diff --git a/http-server.o b/http-server.o
deleted file mode 100644
index b01a947c7792a7ea3df9585f7c5ce2caa7d9ae8b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 29096
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
J*$1Lw7yvPQ<-7m@

diff --git a/server b/server
deleted file mode 100644
index c63bbc29bdba00c9da7a64d718dba72f1c414565..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 14480
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
NXc-1%A4CR10szatrI`Q#

diff --git a/user.c b/user.c
index b95e67f..3ecf95e 100644
--- a/user.c
+++ b/user.c
@@ -18,6 +18,7 @@ User* new_user(int id){
     user->n_keywords = 0;
     user->status = WAIT;
     user->keywords = calloc(user->n_capacity,sizeof(char*));
+    user->round = 0;
     assert(user->keywords);
     return user;
 }
@@ -108,6 +109,20 @@ void change_player_status(int user_id, User_list* users, STATUS status){
     }
 }
 
+void change_player_round(int user_id, User_list* users){
+    for(int i=0; i < users->n_users; i++){
+        if (users->users[i]->id == user_id){
+            if (users->users[i]->round < 4){
+                users->users[i]->round++;
+            }
+            else{
+                users->users[i]->round = 1;
+            }
+        }
+    }
+}
+
+
 bool keyword_match(User* user, char* keyword){
     printf("keyword is %s\n\n", keyword);
     for(int i=0; i <user->n_keywords;i++){
diff --git a/user.h b/user.h
index 025b026..0858844 100644
--- a/user.h
+++ b/user.h
@@ -15,6 +15,7 @@ typedef struct User {
     int n_keywords;
     STATUS status;
     int n_capacity;
+    int round;
 }User;
 
 typedef struct User_list{
@@ -42,6 +43,8 @@ bool players_ready(User_list* users);
 
 void change_player_status(int user_id, User_list* users, STATUS status);
 
+void change_player_round(int user_id, User_list* users);
+
 bool keyword_match(User* user, char* keyword);
 
 void reset_players(User_list *users);
diff --git a/user.o b/user.o
deleted file mode 100644
index 2753a832f6660fb872898e5e75f4541b5336c52d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 14288
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
N2U!3%5kjDG836K6=F0#8

-- 
GitLab