From eee8e8b6ed9b04ba9bfe3ae4a89dea4e1cd62e0c Mon Sep 17 00:00:00 2001 From: Abhisha Nirmalathas <a.nirmalathas1@student.unimelb.edu.au> Date: Sun, 14 Apr 2019 16:31:46 +1000 Subject: [PATCH] checking multiple clients --- http-server.c | 21 ++++++++++++++------- http-server.o | Bin 24272 -> 24368 bytes image_tagger | Bin 42288 -> 42448 bytes user.c | 3 ++- user.h | 3 ++- user.o | Bin 7032 -> 7128 bytes 6 files changed, 18 insertions(+), 9 deletions(-) diff --git a/http-server.c b/http-server.c index 1e8b3e9..2feee98 100644 --- a/http-server.c +++ b/http-server.c @@ -7,6 +7,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <assert.h> #include <arpa/inet.h> #include <fcntl.h> @@ -215,13 +216,13 @@ static bool handle_http_request(int sockfd, User_list* users) } else if (req->method == GET) { - printf("matches a / url but url isize is %zu\n\n", strlen(req->url)); - Response* resp = initialise_session(req); - char* resp_string = parse_response(resp); - printf("COOKIE CREATING RESP %s\n", resp_string); + // printf("matches a / url but url isize is %zu\n\n", strlen(req->url)); + // Response* resp = initialise_session(req); + // char* resp_string = parse_response(resp); + // printf("COOKIE CREATING RESP %s\n", resp_string); // player_session(buff, sockfd, "1_welcome.html", resp_string); - free(resp_string); - free(resp); + // free(resp_string); + // free(resp); get_request(buff,sockfd, "1_welcome.html"); } else @@ -270,7 +271,13 @@ int main(int argc, char * argv[]) // if ip parameter is not specified serv_addr.sin_addr.s_addr = inet_addr(argv[1]); serv_addr.sin_port = htons(atoi(argv[2])); - + char *user_id = malloc(sizeof(char)*(strlen(argv[1])+strlen(argv[2]))); + user_id[0] = '\0'; + strcat(user_id,argv[1]); + strcat(user_id,argv[2]); + printf("%s\n\n\\n", user_id); + assert(user_id); + free(user_id); // bind address to socket if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { diff --git a/http-server.o b/http-server.o index 85a765b9a537f150bbd39e98668b57dcc9742cdc..b00f6d1b747122f3ddabb921837e564fbc1277d4 100644 GIT binary patch delta 10039 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 delta 9891 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 diff --git a/image_tagger b/image_tagger index 246fb881cbe59963a6c0f1db99e86b9f6a69cf6a..e75f06810a1abd98dc04ec442587bdfd46469f44 100644 GIT binary patch delta 10898 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 delta 10493 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 O4U-@;`ja;<l?MQ4b2k(K diff --git a/user.c b/user.c index 169b93d..99db6a2 100644 --- a/user.c +++ b/user.c @@ -6,9 +6,10 @@ #include "user.h" -User* new_user(){ +User* new_user(char* id){ User *user = malloc(sizeof(User*)); assert(user); + user->id = id; user->n_capacity = 5; user->n_keywords = 0; user->status = WAIT; diff --git a/user.h b/user.h index 6a2d92c..6131fe7 100644 --- a/user.h +++ b/user.h @@ -8,6 +8,7 @@ typedef enum typedef struct User { char* name; + char* id; char** keywords; int n_keywords; STATUS status; @@ -19,7 +20,7 @@ typedef struct User_list{ User **users; }User_list; -User* new_user(); +User* new_user(char* id); User_list* initialise_player_list(); diff --git a/user.o b/user.o index 96afe21927a303d79fb739e295414526e16770b1..d10234ac9ebf35864a3e8532e0781a1ba07fdaeb 100644 GIT binary patch delta 1946 zcmexicEfyv2IGv0nsV$49-Xx>_H#^pD>*S)+`ywd^o2)f0Eb7n>yP6O3akta3=pOS z1Dq+t2xWFVC`_CuAu0e;;nD3N;L&=ZRB|Us;V!|+K8&&xU&t|vPiALyVU(Ke!`Q+o zF!>^5BcsgZV5Szv$CGa`DKNTB{>ju+uffFmmw|zS3#5~YD+fezXQnVPaf6r~5MdsW z3IPb4H=KciK?1_&o5#SwAOm6ZgTxgWSUAA?K*lf$tYlzd-~=%Rn1qZOVU`GkR6;Ej zsRxO3FtBh~GBPl*a4<76FmQl$Fp2UpGBEIfn2ektIS>nkH-iWU1_s7Cvltl|cr#NN z7&$>!GEI!&14%J*fmAb1%-{#{RxvU#a595fU@TC{z`y_!6HH|QS;RW4o{@n;2qecS z`Uw=YASMF?LnD-CoC6Yt7%T>2!VKnMLNS<y!=90W0c<=-25h_-1M3e)1_oh}QH*jR z5`=9)1laxVObiSn^&l>z9MsJs5FW&$1O`zsR~bZta65<qYn=$v3gR&;L)1oyfp{Ps z10on07{oIf7*#+a%``EGfdQO?7<KM5L1h^j7<|D@9Z*PugdtYzpc`igRs}Imck)!$ zzIt8;W)3TEYi>_r3vLDm9z8~TNoGEffV!louppxlyMx3uCrL(O1_oYMxKbtw1_nM8 z28cpWVGx%e#Pt+5kpyuB7#Tf<L3#ug89ascxfvLQ5C)?d%gn$aJUN?9(n*9B#W+!f zdUZ(@XNYk#g7^#!;wC8Wk(hjp&4kfqvY@y)<BG|`>^3~RuQM>QFtU}faWwDV9K}AH zY4Q(F6@GAvbL10fV{+zYV_LUan@g05ar0zH9(%^klN))&B~73S2Ntyz44^c{$WSnO zBac4g_sI`=^cXEC3-C%X8c){bO=lFEJdszNQE9RwpE#q=<b%B8l7`Sw24y8swr7X( z%_e{36=$pftDg#1KOdx?amnOBK5@pCVA+EpS;>n~9WWCdp#0k)^^y;uJeaIBl>ZcL z!cUM1jAD}o`Nbs_pnid=geqiEo$SajE~y2T1tlX;uKDvH0+voL<QHc=3MQX`$qyiM z^9BANjFM-eW`K+YW$0f}LvBufC@3!Z6is#~RQBU!K_PKT7AOy<_YIWKKiN@8Tv8g! zgUPl*%~GFSC?wA408+!~J$a#!xMV0)C5Qq!9;%R`a`HtXamMz^iNfNH6DKnYiyLkL zDS;M<AlJTxD%}MY2T>psz^Q_Pf#D+9uKOSpJYRw&K^c^RfdLeaut?woX+SdbBUGIT zR2;+wF<}Wwd-6eHaYoC@iX!5S9+N)`i%a@}q@gB*m<1p$3=9mZAT^T3AR#2#8mR1~ z$$=u`l5@~xze8m=gY_Onll>2seKdKaNV_D=mkH2N04WAxlgWXi;*u~|EI^a}zPV9U zoRQIG@=P&v#t)M(irF)^OcoRek%8j&j1wkL6u0Mm4l;*<f#Lb&o8sn71_G0XB<wiP zfr5>JfuU@2q=Y$>3;X0r5_U`)qLVL4*m0IXbH$p;l9J|35u%fWB<+|KI3`b$v}01{ zntVypjwym`@<uMP$r@4`oDrZz!N9<<W3nN)@Z=mR6~=<e6Q%4KUrfFzWzQtQJy}TF Rjw^r{;_{gclV^#^0RZ9a9!mfK delta 1811 zcmca%{=;m72BXD9O*uw^i9SXu#~mbC85kHmx?O)9cMxEJGesDo%x(vXiR&aLyEBR~ z3QUe+l%4oPj!|r~IHL=r<m4E}7DkTA4;dR7MJ6XRwJ@HZ{DMh=(PT0wb5Fej6Xz!e z1_myWkxX1UAPU0f1_^UO*gWA33=9GgHt#$J1_lubn-3%|!N9@+(#HYP%f!Eufq{V& z#1vo>)L?{}ECf;swM7^t%)!9Ip~uKj&%na*gMonoqFIEQk%565q?wUZ59BitlYxO@ zF_dPU)5OTYzysnja)A^uP0Zj0@g^}cFmN)1SYXUo$-uw>65~$=o6QQ+1~FIU7LvJ* z4E13342*L?!VrT+K}?vzA5aZu;V@xjU;rBrk^vhp#=!c3k%0jmDU7lZ^B5RxpbW-2 z`b-QAf*>BFEY!(R9>|_Brilp*LSR`X5DCKVAcBE`fpJbHT&ogDG1J5dVW=EK43r^~ z$-t-#3S6d%ISdS<AW=r`<C7a$MKzAYb!(&RwgagH#bYJ|qt4{LtbHDOjP{bud{*4n z+@8XMj6&=V64RU{8HE`bcuW{z;!F|@47?z&r?816h{MOo=qU_R#IMNUDXh=Uz#uUB zESsd0AS;R<A%x-Tk|>4?b2EbY3=ASB49px5+d&44PS#*IVKkXsC@#*pd~zwf4R`Z( z1|}9pwh}gu=FNNAXEQM|FiZ~TQsoCH4M#qKHYR6YHl}%-ySYS}7#B}o$YamAc=AIY zaY+?ue8VE7f`NfSh=GwIVX`2vKI8Mrj=Xw|W|IqeB^V7Rck-q)@=gB8E6yl4xsgwt zQDd?qpSYwhG_XKv9+U~$p?sssfqdeO8DRCTVD<eV^^8*{Z{!naoC%iQ2$GdN2-N{I z!2!xY4N@<80m_5PN<;Zq!6v)}nZU?4xsYF6QUK}~m`bQZ2GPk2`Nburpt4M0A2Klf z`40h8Ctu_jXWR-VuYk!1Aab*Tzz;^rLr^n7MuO7+FQ_5sCOZm=OWs10-3gU_Hn~tp zT=FNH>>H>o%jAVZsE!4h+y+%GGx?&BIHM^@4Wq+kMqzPDFQ`5c1#&!8Aw%M1Lt$~o z{K*G}#ThFnCkl%j&HyQa7FQrMUqY2Gf{KGEkO|;a!N9<<6KvOUkO`g_L6V?s#lXM- zibhx@e1nR^Lf|8m{|8EgD3F=3gd{v!QAC_kadM-GIHSSjKoN0CGmtdYWDqj}q=kWj z!55@PG8!a=B%1@3t(v@1L|n23P4+odb~ae=N;KK`P}x(H1x4E>VZKa&h5|@22&+uq zC@L-qbHxHQ+2@-dii$HbnoRyFX3jWavZ1&=W69(~Fu76Op0Q!_M{#@3>mYL&7#Pk^ zwv;euy1+lVNWzYD87SBo7#M6O@02iSdc-#QlY|}936aT0l6IUz&|I;4a;2m>(+`o! zn<VX+_Oeg@Bx%QVfOE2ulpWJo&dGw@Vv{?hG&p~NYX}C09g`<=3r{{HrNSsM`J<FQ fW5;AeX?vy(T$78W?YKUGVwiz}VJ5@mUt)3qhH?sX -- GitLab