From 22b800d829b30836d06eb44a2bbe78300c83809c Mon Sep 17 00:00:00 2001
From: Abhisha Nirmalathas <a.nirmalathas1@student.unimelb.edu.au>
Date: Fri, 19 Apr 2019 11:18:00 +1000
Subject: [PATCH] cooklio

---
 hashtable.c     |  24 +++++++++++++++++++++---
 hashtable.h     |   4 +++-
 hashtable.o     | Bin 13112 -> 14736 bytes
 http-parser.o   | Bin 6992 -> 6992 bytes
 http-response.c |  11 +++++++----
 http-response.h |   1 +
 http-response.o | Bin 8376 -> 7752 bytes
 http-server.c   |  15 ++++++++++++++-
 http-server.o   | Bin 30888 -> 29160 bytes
 image_tagger    | Bin 50088 -> 50224 bytes
 user.c          |  15 +++++++++++++++
 user.h          |   3 +++
 user.o          | Bin 14200 -> 14784 bytes
 13 files changed, 64 insertions(+), 9 deletions(-)

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
index 181ffc4f2d1b1f243e3a17c0104bfeb5cda7f9f7..e645c3024283be1594fc9b89e8ea70900f41bc1d 100644
GIT binary patch
delta 4896
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

delta 3583
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
Y6QHRd6lx-qZ7sDq9i$=3vp}{202*V07ytkO

diff --git a/http-parser.o b/http-parser.o
index 2b8275ce460326732ac11963bb8fce87c42ee2ee..991595bdb34393e6913860faf4886e396ea822c7 100644
GIT binary patch
delta 16
Xcmca$cEN0e2`{s;f#GIzUP(RxGC>5h

delta 16
Xcmca$cEN0e2`{serR8RGUP(RxGN=T@

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
index 55b6aae6b41e473941b9be6f93416a2973bd89f6..4b2466c739a994873f2cb6feae255a160a83ea93 100644
GIT binary patch
delta 3085
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
KjFWFk%K-p<UpG1c

literal 8376
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
HnB@lmd#TFb

diff --git a/http-server.c b/http-server.c
index 5a857bb..94429fe 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
index 2f79510ca1627adfe514713bbe53a0d37c8f3fe4..57139f56959c935e10194905dff25c3ecae120c1 100644
GIT binary patch
delta 7622
zcmZ4Sk@3Z2#t9ls895WR{1^>4R(h~9PThQn)r)zv3bzQ)W(V;^#?7xJ>=`E;NQE#}
z@l9@%l4rUnvU$0b0vqG($tM)NqB$5C7#Mhkk{B2mR2Z1R9ARrV1_pKzQ-D|WG#dj0
zM2#3o4U{bo5oY7K$i~3H#xa|X0jgJG85;wGI7ly}&g4WzvHD1M1_lWTpM#NsfoWm{
zlm{}6X<`TpFF>+@fl&{lE<-Yzfl(i#Dn$xpLMA%{11B?x1;*UG%nS@5F`g3)3=EtM
zydbNjK~juXAQFUU)q_X|1_s7Cci9;jWD*$|tsusG$Rxqp4iHCJfh=R5xTjtgq>0f6
zqA)=+H7|t$#>;@n*@BcZO^kth)iV_wL?CSp3}uWEnsH7l2SYv7^PV8Xm?!S2gIMJW
z($73`3yceqU4hD7P$yYj!ocX$#KOS9Jn=%EWF7;fA4KDcI*2<WAlx%`49tw+$b$rZ
z2HZU$|2x1P^ppb@85s~8VeZL*m;-YURCWc#0a?fn$bqPYIiLi>JyXX33HcU?-x(O%
zAdGqj#yNJJFk4$7wyuDNa4SfLX`%zfFKrOX9Z<=3h{;>(kt4PnVk!f}EGUC<&T6>n
z-4Fv-)I-7;%(Y{lxBzNk4@f24wqA&0m~DNiwn2h%a_VFQ718=kE|~i#Lp05R#?xeo
zrYSHkM79H!+W?KKDG=EWb>OsI$%UMj!SOsD63hpn>Stv#fTDdzT|Fq?XG5%70hL??
z;jXD;0OtabY2aKS%)kqBEyVfT;i-UufuS0n2)@I;vmN3jSR&XCF%*^vpt39KA*o;o
z#CecpxC^2bmI@9*xM%7Z<UsMlcm>(!|7;*JP!<g3fd%9hh=!hgNK{<`$uLiB$cLna
z8__%<uRq8K`TSNrMC}r&<a3ClSL90;r4}+UzRUru-H<O2v4w$w6YA3w+zbo~AVEeJ
zMu?sh`HCPu2<L+c2ABdaMo>A%Jn=$4L<2We!;O3f26<2x0;_%vCK(v`cwqX(q3U)Z
z3@(K#Qp#jtlwyQ9eGbSNs5pZslwkrl#Sm)yfqVwI`(&V=P|9SeXLN*`vmhT-*j{I2
zVBqFsWMBaKTp3jMF>o-jaWJrfN^nq77XnrewT3~Q6~bbi^PZQ1K^4Sdgs5Pi_@@TO
zcLbL)A8H`}j|H2+JaI;?0s})m0|R3!BS<sz#14=E0|R3&;}>R76m5X=>ln+y23&yh
zo1g|vfbyFeAu+t779LF+AeS&OFnIC8LbD#KX%18qlwUt_K`kO+9)pWHn3i^!y>;-A
zdyNP=#y+TtQ)=PTAEDMlJUSKXj{{IEr!ne-{nZ2IPiIVGa0hvG3BrWcP!p6g3m6y|
zGk)O()oKA?L0(XNgX4yUkAVT4Bl#I1X<A8gvYw`dld2>ia>j?qseu9)QL{k=)v>A6
zc+b1JLvs_OJ~yKvqYyizFav{v2?H~q6}L63r!bQQ1A`(&hJiuJgn^j@CO$b+JAvt*
z$Ye)LF~-%KA8D5`GU{v&*JWg6ET7z^S0TrDg2R@hnK_AL4YQISa~#JBW>q~VC6TA|
znZxHXYj0N2H)Ufj$}i1JnH*xeVY8&!T*l2i%vBgwWf&M3G@t<v&gYJN0&Psryll+B
z*m&4E!1>Q(vZ|%=<N!;S$q|-6j7~t~j|&`N3=CPI6wAQM@Bk_<0u^s&05vHX8BTC)
zZn6?%WDK0V(N28w2J01*1?(j@7uYB;GG<SnXe-WGG5Mm6IAcAS>;;ok!Q?71xfM*F
z0F&3i<RcI{xxr3?kr`wpqd1t91C#1t(f~}FgGoCODe29`z#zoH$Z(t=;yPHK3ING6
zMu5q9Fqr}-^TA{(n5+krEnu<>O!kAxX<%|KnA`#;cZ0~u2OQFw%q=GiIEpcw7#mG?
za(u~CkY8L9UzA!{np#{kIoPRZvV)Vz<oixHnNBcm-sQ~4%JhI~^C^#e%#tje5ch$?
zQlEi=;m>~vP?+54D=ujZl?4Sos8EQ3Mx4{+Kwt6tYN#wouK|+Y=}>W)u0*J=`A~6?
zdP5}j`;o+rki;)S#bM@TL(RDj5sv~lAoY+me1%9bz%;;Wu)k1obc@A73K<yS>N}wp
zC{Et!D_(C4l?CZSc9uU>97KTvWeQYRBuD_91{oOCkzCaP6$eou^~<2@J3s<Z^~k|7
zA0l24_MS14LHi*RU~yyzU4)8*D3Ar~p%&Z*2|z7C4yN}=;wDJu^K&E8f)T^yJb$iw
zMW_%+2gqnx6lg=mL1BYzv^|ozDU#6<P;r<!`=Cxtf{LS?(+LrWM6nr?LF*wB;4m;p
z5<dzRhgkp%gY!^vbPHZjPV^VA=ix#4*aFEkB_wf6Bym@$ILwywP;dA`#X+`cBdL!;
z5(kyhu-ugm5r;%Evcyb?1lW6^<}pmeStM~#R|O{i94ZcT(0!<bK0?Jo4w6K2&<tLP
zhau|g85o{JH7tNifHWZcU_X+$HIhO1k;H9~#6LpCAr>$&e1V$(8!8SmAD%ht|Ns9F
zs`fx`0!i2+86?IB5=G=qW{?5~1_o)UIEZV9q+Sau4zqXyL_32OR2-xpRHeg0&W{h=
zP61UJ3=H;21_eVkzzkA{`XB--4l+myNqsR?9Hw3lq=12ep%y9*;vz@E7N|HE$bL|s
zvH+=IU|`q>l>l*(HN1d|!z^$HDPUk=cncK=aY1b)n9n4jRSrzO4@dz61A{D79K?mF
z2ZjIt|NlLp5-<%RAQcP@48Blt5Er5WQa4mU#bN4WKng%UhKhr@$m&-hi6e*fK}jSD
zHKZVA5t!T*tQMF7GKhhJK}-M=mmsbqk}`KBaVI44Xs9^Mebpe13=9kjlM6${J+q*)
zAVFs&U9*wIU690=K*eFEHGwoTFfgnHnO46UDhm=sHtjf)xGR!r&yd93ki?k;5q@+>
z66Zk@_dpWYhloQ;5KspJ7W)<u33#2>3vw9)1A{G89K=OVzV1lk$R3D968A!~_z9A@
zH^bz8VPdL2NYYn?ApU@b)+CU93=9l6CkKX!Gd`ZI7$$C5C=5{plJZ5;+X@wj>75Bu
zz`(%JHMuZcJV_eb&I1YhA?ebCio<j*04ZQ#V6cFSgSg1qDHTZ^)R%z;+zpY*w<6{-
z%5JWVOlM@=Jo#Z%Jfr<&$7p@Vsgnz%%cVYn@+v4bLdye?eIU=WuuW!)DU<Ys_E}@m
zq;n=ujOmyB1eM*4CL2E4GB%#^)#RD6%NdI%JI0AiRzg+6G8N34hRKC-;*#x9*)ou?
zpe+}WBl;#UjMHaaHThzkJEP@f$@p@{Lz5@Q$1`4@{4rjf(PA=Zf<B|)WXlA7$>mUQ
zltPEaVCL_i+?b%xIB)XC1aU@*$tM%^84V`?Oekl(H@PrTpHXe{!o+ySC6gJG+!-Aw
zdnT1LW=}qtq|bO|^2elj#ygV(lf@+k*dfuX4YdJg^6ANq$>NN&CeKX1&iH+DVTwCr
z-{hSs`jX$F>Lj3kf~kKxnK4zIk!iAIsypNE$%(1ujAtg_OqEaUM^iTis(%ie_$3yI
zJC>t~>qGgQp)|}se~5C1{gWNj#3gT_$-;C!o?MtFUjG&<3yMZ)6o7TJK>ZFgGaM|+
zz#xPsZVuI?fF}ML>K8XO@gGog0wCgA3?Pd^YGIwCe24@%yMq$KQmBT~$%g6To=ebV
zVb*U(6Ze4f&qHaLH(<`XH+f>Zxa13{EXWNYfB1tK3=9naCm&1~m*j&EXu|Zuy3Mka
zKc<UI>Y&L6fIPv#zz{ZBF+*H315I`*GzxPk2WE&%mP2Jh)`9Fj3L+R782TnRW{6A9
zh03Day9Q)0<28`^jL#-N%n+A+162t#hZSlI^W=q@;)X)dP6EuF=TKV|(8SxJp`bsR
zF-zRg1x>aZD(eLmhuPH)wJQ;1mt+A{7G~FfXlT?=zL+U4*^4F%vvCf{M#+t6vOXXy
z7#J9KPd3aFXS@V5pYh@3#4K^o4`?dSK~?@o6NlN(2XYQlp)wWf7um@Nv&1FUp|T)D
zK+b&t4IjJ7AG5?IqoA@N3X~2Tq3N)GvSPNlWG6@%+---nw|t={FPI#dEiSnpDhr}O
zdSNMN-{i(@@x&J(VI)_<O#Xo;{toIMCTNQv<W7*#323ZKLd8MakZsYJd@)Cy(R}j5
zZ1MVFG&S>~?kt3g!_3Tv^4p*^%uE4j@h}Z44paXT%3ltpVd~qUsbV`se6o9vVB$##
z8=TWY?%xS*%HM;E!}O+uBpDbO-a*A-b}>U++Wb&`F!60rah1s*bH(dT(PSH;jmcuD
zINTO!2-HEvVWz>xHKszvVd}M^>X)L4?}CQRR)}~#yugA*_ECrgT>K!&CI$wEt7zi7
zQ1Pc|;;~SRzoLm}Le;ZEy$^9{HUmQlH0(v85+HS;AdQ7KaI~P}5Dg3r)1WEZ3Qb%Q
z>N9VsILw^)P;+7?7v_uC=b*_x2PHuU28M1labIW~Xbw~yX8TU4YuBKOr$BArgC@QW
z>e@39aY)4h^4?^q1+35rhgo0)ayJ75gWzPt0&z)sG+B0N=xR?+ED)D8L6dC(l?MzA
z3=Weg7KlrFqRB==WkV+)ED(2$LzC5lwnMU@;vi>$G=N8`85kIlyH}tv+q_w_P@Pc-
zR_cMg1j5JpH)j>eF@i=cyNb;w*B5gzaR^U7Rcyv2Ckh(FoGekI0b@p#XmBZrLIUUu
z)8wuaGbWDU$%jhpxJ1B{3k(c(e3Q9K%{T*sA&N96dzP9rO;VfORBFexSYz^`Qah%K
ztjSDecAS@?gVO6KdzP6qt;m|(RA$H7qyy2ne)7pOb0$NR$xP*TOlc-ycSMwHaAtr;
zT^JY`GA4JHn{yoi4QMhjFnnN`e5%}xX+!p8rV2aG3!vc>uo}+_b1n-|*O-BU;V9GO
Hu3|X=ri@aM

delta 8953
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

diff --git a/image_tagger b/image_tagger
index 759d813b60e17389ec90cab269c2df6094a4ef22..0a73c5e2bf39bfe9fdf2382d2d6ad6921343eddc 100644
GIT binary patch
delta 19654
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

delta 19977
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
BdyN19

diff --git a/user.c b/user.c
index 4012954..9af5916 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){
     for(int i=0; i <user->n_keywords;i++){
         printf("words being matched is with %s and %s\n", keyword, user->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
index 49a932a02a49d25a7030cd94a522b1b939675585..0af93b19e77ba6c543082c2de78573050b49a3fb 100644
GIT binary patch
delta 5611
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

delta 5014
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
NLJq=PK6#;;JOH3#fFl3^

-- 
GitLab