From d5dde72669a5516eec120f80900341146322e040 Mon Sep 17 00:00:00 2001
From: "romain.gabet.etu" <romain.gabet.etu@univ-lille.fr>
Date: Mon, 1 Feb 2021 15:52:31 +0100
Subject: [PATCH] mheu

---
 webserver/.main.c.swp   | Bin 0 -> 1024 bytes
 webserver/.socket.c.swp | Bin 1024 -> 1024 bytes
 webserver/main.c        |  16 ++++++++++++++++
 webserver/main.o        | Bin 2128 -> 2776 bytes
 webserver/pawnee        | Bin 17440 -> 17736 bytes
 webserver/socket.c      |   3 +++
 webserver/socket.h      |   2 ++
 webserver/socket.o      | Bin 4592 -> 4672 bytes
 8 files changed, 21 insertions(+)
 create mode 100644 webserver/.main.c.swp

diff --git a/webserver/.main.c.swp b/webserver/.main.c.swp
new file mode 100644
index 0000000000000000000000000000000000000000..02609d8d567ee0afd05e5399fd09b580d73179ae
GIT binary patch
literal 1024
zcmYc?$V<%2S1{HyVn6{WSQ!}76O&R)ico~Ha)?!zo0yrWmyFejQNhs=7!82|2mt_d
CISStZ

literal 0
HcmV?d00001

diff --git a/webserver/.socket.c.swp b/webserver/.socket.c.swp
index 36066abd09b6d63155fdf784302f40a32c2a53c0..0173fa2adbb145280321885f721fe4c81118667f 100644
GIT binary patch
delta 19
bcmZqRXyBM2!E~N=qEyhvxk1bm4>$n;J*)=8

delta 84
zcmZqRXyBM2!KA@5Q7Xt#KO;XkRX;s3DYc|X->I}HHL+AbpeR2*zPPeDKCw(c*Tm4k
aFj>DmHK{nYs4TTee`8J%vtTF#8UO%X6&9}m

diff --git a/webserver/main.c b/webserver/main.c
index 20c2a69..20fc092 100644
--- a/webserver/main.c
+++ b/webserver/main.c
@@ -2,12 +2,28 @@
 #include <string.h>
 #include <signal.h>
 #include "socket.h"
+#include <sys/types.h>
+#include <sys/wait.h>
+int status;
+
+void traitement_signal(int sig) {
+	printf("Signal %d reçu\n", sig);
+	waitpid(sig,&status,0);
+}
+
 
 
 void initialiser_signaux(void) {
         if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) {
                 perror("signal");
         }
+	struct sigaction sa;
+	sa.sa_handler = traitement_signal;
+	sigemptyset(&sa.sa_mask);
+	sa.sa_flags = SA_RESTART;
+	if (sigaction(SIGCHLD, &sa, NULL) == -1) {
+		perror("sigaction(SIGCHLD)");
+	}
 }
 
 
diff --git a/webserver/main.o b/webserver/main.o
index 16c42a2da10ef21faf2f6937a4ac6a8824af92e5..fb874988970a6be8d0039de0c50ef3347c5b3b79 100644
GIT binary patch
literal 2776
zcmb<-^>JfjWMqH=Mg}_u1P><4z%YXy!FB*M9T<2Sco;%GI-hzpzY*xH{nPFGr}LOc
zuPsP+2Z(q9BD!7w>;lmqy`~_l^Eg;^!pXy6osDl6FfcIe1KGHrmw|x+Ea}nw<9{g+
z)Fg;VFDpp1M`vro|Ns9zdLdNv0S*tSdB<Hr>I9%N5DPnx?H7a@iD4ql0T8Eqbe4W-
zuKmMUXXw%G`oRNaa5n?g#V{*c50nZcyJ?3O0|Ucr1(3ZA$m07a$V2@B4uq43gEQ0f
z5_1$(Qxu9)4=*p}Vkia+fT+aelFa-(jbKlAXAd72O$Ob>l(Nj^R0fy)JoOTVfW*Aa
zWJLzQ)YKG(#5@IvoIL}ByR);Ef`&_KQf6YFf`y*3o`J5JCWOHt0tzPv1_s8eAO^+?
z0Y+&ac8&>*3=A?15Db#G0uhdU0&PsrylkaB>>N-z8<02y14AQ-hRHM4fE9rB$AH8c
z7#K1@G+aIzEDsXGhCwmQ!tn7wHaTXjDUE@FnSmLbat3Aw798T>)PW(#%z%_=kz|<}
zKt4tifHIjG*q|%~1yU)<@aaFyW*E)Sz`!7c<bH6NGB7YGGB7X*Ahg3-<~YRdaEQA>
z&4-x_juQq31}Plsqi~2P;t<cpAzlu(cQ@4K;J9XBV5q^Nz8Qyj2M%$D+{Da0y<~>s
zlEjkIVuq5U#LSY^+|<01cxbMOclYska`cJ!cXJDN4T%qNbn<bHXDBGj%qvM_C{N5R
zDacG=$jr+u$xO`2EKV(g=qs&YC`c_T$}a-ts?^+qlFH)L5)d1b!@#yO6qghw=N2#&
zl$I1TBp0QE^rjY-rIr>kFfa&1{maC_zyL~3fBr*&EL0p6?>r0)3@~vWs5nSHCz7}^
zR2-xpRG`7s2Ox=q(hf{K7Ag)h2V^fu4@f8pL@+RbQ#>d=!PI9$#X;)1kn9D;14s&F
zFR0Xmsb35dgqkCSq<%eA9Apm2URb%Y1u70Q2ie|xP;r=gbtwNClm@8>nE|u+BUBuw
zULVT;2BksjMUmXY1S%+??&L!f=Y)#G%z>3rd{A+8b0m<&#gNQVfZ7W(2ZW(q21s4T
zzyJ~hVOV}kfGPlqfiNsTFz6Lm=9VNTG3XVS6hY_=7^^5XCsD5?wW5SUFD0=gkwGu1
zxR^n&C?CQ}&d&v<a|XS<{E}2XcfU~G;*!MVYz95Bw$zOHw4%h^RH(HSQy~9>f&#rn
zgZWn(B#C4T8ka#D8W%A2Fr^%z#KOS9@Bpd-lm<aeP&o-wBLN~97#P$*br1unEQbm}
zsbr91C>xnV7Y5}okeTQ;0kQfGq4tB~4%r@<epr5l$)VeC3Ds`^QvjtmLlwfx1*kB*
zCV)yaI6?Kp<YDv$m;#spltvd0hw4XnKTLlGR3D52g%ykqqJwb6-wSAh@Bk@dU|;~n
zA4o3<gM?u52XYU(-5_}nsGtUv=4N1E0F{5}`axpoaR<_00Lrio3=Gpi93%{~4~feF
TD#NhpH-J{@pn45iJ-U7X4ugKy

delta 615
zcmca1dO=`<29p5mL@lX_t%^(&VkiE}WGl{0&r8gi+{@_9#sCJB&oin@YJixId;)Du
z&b(~NJnS3{3=A?13=B4tb(y}43NbK(<iQxM5+pl0kXfA32uxan$jKkrS->h`Dl)+8
z85mqavWz}pG7v;gE@0sh&dkd!$xO`2EKV(o2fL}XV)6tQab7SxhoK;~s3^Z^@-r4i
zLw=|^EDQ_`+zbp1fBr)N$bBFwCI$uuRwQx7$%?Gv_1+*U1_lP0EHjiJ45dM)@geDo
zgNnn{gKPo`C4&eC1_qFNkV{~;=Oc-8BAHVL5!ZrSECCT<sD{$$2DMHWWD}qKf=z=_
zW3ndudBzEo1DS*;^Khte7C_z1G1-#CobkfsiR|K&6PQ>g_i(5n@y>9la9)6#tpm}^
zslxdODk2LO@!?cql$>11Y0s$ujme0~g3Q8`&v2@6R)8GDz`$TI`6s72R|Qml2IFKa
bE;CL6s1xGB#`JKhaISzVPXvqbaPR;C!A*ws

diff --git a/webserver/pawnee b/webserver/pawnee
index 4769e4d4a9faee65d9a246c9fd1acb0f8d1da359..0b44b9bf2da5f5c07bca4b302ec12129843f68a5 100755
GIT binary patch
delta 2941
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

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

diff --git a/webserver/socket.c b/webserver/socket.c
index 8abb0e2..62c9b0d 100644
--- a/webserver/socket.c
+++ b/webserver/socket.c
@@ -6,6 +6,7 @@
 #include <sys/wait.h>
 #include <stdlib.h>
 
+
 int creer_serveur(int port){
 //socket
 	int socket_serveur;
@@ -57,6 +58,7 @@ int creer_serveur(int port){
 			exit(1);
 		}else if(pid > 0) {
 			//close(socket_client);  fait une erreur si on le met
+			traitement_signal(SIGCHLD);
 		}else{
 			/* On peut maintenant dialoguer avec le client */
 			const char *message_bienvenue = "Bonjour, bienvenue sur mon serveur\nExcogitatum est super his, ut homines quidam ignoti, vilitate ipsa parum cavendi ad colligendos rumores per Antiochiae latera cuncta destinarentur relaturi quae audirent. hi peragranter et dissimulanter honoratorum circulis adsistendo pervadendoque divites domus egentium habitu quicquid noscere poterant vel audire latenter intromissi per posticas in regiam nuntiabant, id observantes conspiratione concordi, ut fingerent quaedam et cognita duplicarent in peius, laudes vero supprimerent Caesaris, quas invitis conpluribus formido malorum inpendentium exprimebat.Sed fruatur sane hoc solacio atque hanc insignem ignominiam, quoniam uni praeter se inusta sit, putet esse leviorem, dum modo, cuius exemplo se consolatur, eius exitum expectet, praesertim cum in Albucio nec Pisonis libidines nec audacia Gabini fuerit ac tamen hac una plaga conciderit, ignominia senatus.Post emensos insuperabilis expeditionis eventus languentibus partium animis, quas periculorum varietas fregerat et laborum, nondum tubarum cessante clangore vel milite locato per stationes hibernas, fortunae saevientis procellae tempestates alias rebus infudere communibus per multa illa et dira facinora Caesaris Galli, qui ex squalore imo miseriarum in aetatis adultae primitiis ad principale culmen insperato saltu provectus ultra terminos potestatis delatae procurrens asperitate nimia cuncta foedabat. propinquitate enim regiae stirpis gentilitateque etiam tum Constantini nominis efferebatur in fastus, si plus valuisset, ausurus hostilia in auctorem suae felicitatis, ut videbatur.";
@@ -65,6 +67,7 @@ int creer_serveur(int port){
 				sleep(1);
 			}
 			close(socket_client);
+			initialiser_signaux();
 			exit(0);
 		}
 	}
diff --git a/webserver/socket.h b/webserver/socket.h
index 36a23ed..002ecc8 100644
--- a/webserver/socket.h
+++ b/webserver/socket.h
@@ -5,5 +5,7 @@ de la machine sur le port passé en paramètre. La socket retournée
 doit pouvoir être utilisée directement par un appel à accept.
 La fonction retourne -1 en cas d'erreur ou le descripteur de la
 socket créée. */
+void traitement_signal(int sig);
+void initialiser_signaux(void);
 int creer_serveur(int port);
 #endif
diff --git a/webserver/socket.o b/webserver/socket.o
index 01cfd92ce54f541cc5bafab22cbd8b0eba180093..69669a0b4e38637e404419002cd15e253cff4ba0 100644
GIT binary patch
delta 295
zcmeyMd_ZM_1``ASMy+f{zB-=$f(#4{FBljY7+z1GJe|>!iGgABImUNvjI$>1<@n7w
zYx7P{en!Tc$p<;b8Jodm=j4Z6je;dbiJ2v-xv6<2@x__xd5Jlb6S+k<S8zu#NyajQ
zjALM6VPIeoVPIhR^B)4zCST+gXDpk{$S1Dag``FdNzD`_aq-Eje6Ja2O%~)g=iI;z
zG4sOYKz?(kTa1%0a)?b{z^?&gKH%42d@z|)z@D*lvZsJO(=rZ-3IPqq6_Za2*fTav
m<`lH&e82%Q#$j@xpgE@k)X@IP69vsVXYfJf5+_gOmj?hL<5j5u

delta 263
zcmX@0@<Dlm2Ga(<jau1^O!bQ=FJ`pd{DAQd8)M((vmCz}`!=8C<Y#0ooP3c}oUt54
zPFCQ~5-Bbz%1O;*C@;z^No6R`Nlh(aVA#BlJBo=hYO*4qxM3C}0~oL{FffQPFfjc2
z4*_*Z;-X069g_q3#3wiKJz(scoXBs^S-}m~&ah+hLVk0mbBvQ8a)?d-z^?&g8VG1G
zUYHyyV9!`Nd8U9p(=-l<3IPqq8IvUi?HLUwM+(|=Uf_TjqcM4*pgHFcE(ou7@<Ty$
OP7gi^FLCliet7_av{BLk

-- 
GitLab