فهرست منبع

:sparkles: Ajout message erreur pour le client

Arthur Brandao 6 سال پیش
والد
کامیت
27eb7a84f0
5فایلهای تغییر یافته به همراه73 افزوده شده و 1 حذف شده
  1. 25 0
      Serveur/bomberstudent_server.c
  2. 2 0
      Serveur/bomberstudent_server.h
  3. 41 0
      Serveur/bomberstudent_server.log
  4. 5 1
      Serveur/main.c
  5. BIN
      Serveur/test

+ 25 - 0
Serveur/bomberstudent_server.c

@@ -16,9 +16,29 @@
 /* --- Globale --- */
 arraylist get;
 arraylist post;
+char* error_code[] = {
+    "520",
+    "400"   
+};
+char* error_message[] = { 
+    "Unknown error",
+    "Bad Request"
+};
 
 /* --- Fonctions privées --- */
 
+void send_err_client(int client, int error){
+    JsonEncoder* je = malloc(sizeof(JsonEncoder));
+    //Creation JSON
+    add_string(je, "statut", error_code[error]);
+    add_string(je, "message", error_message[error]);
+    //Envoi
+    if(!send_client(client, je)){
+        adderror("Impossible d'avertir le client de l'erreur");
+    }
+    free(je);
+}
+
 /**
  * Thread de gestion d'un client
  * @param data
@@ -203,6 +223,7 @@ boolean receive_client(Client* cli) {
     } else {
         //Methode incorrect
         adderror("Methode incorrect");
+        send_err_client(cli->id, EREQUEST);
         return false;
     }
     //Recup la ressource
@@ -212,6 +233,7 @@ boolean receive_client(Client* cli) {
     }
     if (compteur == 0) {
         adderror("Aucune ressource demandée");
+        send_err_client(cli->id, EREQUEST);
         return false;
     }
     ressource = malloc(sizeof (char) * compteur);
@@ -221,12 +243,14 @@ boolean receive_client(Client* cli) {
         if (buffer[pos] == '\0') {
             //Pas de parametre avec le post
             adderror("Absence de parametre en POST");
+            send_err_client(cli->id, EREQUEST);
             return false;
         }
         json = reader + compteur + 1;
         jp = malloc(sizeof (JsonParser));
         if (json_parse(jp, json) != JSON_OK) {
             adderror("Impossible de parser le JSON");
+            send_err_client(cli->id, EREQUEST);
             return false;
         }
         //Change la liste à utiliser
@@ -235,6 +259,7 @@ boolean receive_client(Client* cli) {
     //Appel le callback
     if (arraylist_call(al, ressource, cli->id, jp) == ERR) {
         adderror("Impossible d'executer le callback");
+        send_err_client(cli->id, EREQUEST);
         return false;
     }
     //Nettoyage

+ 2 - 0
Serveur/bomberstudent_server.h

@@ -17,6 +17,8 @@
 /* --- Constantes --- */
 #define PORT_UDP 18624
 #define PORT_TCP 18642
+#define EUNKNOWN 0 //Erreur inconnue (520)
+#define EREQUEST 1 //Erreur requete (400)
 
 /* --- Fonctions --- */
 /**

+ 41 - 0
Serveur/bomberstudent_server.log

@@ -0,0 +1,41 @@
+----- Log processus 7726 (timestamp : 1542996923) -----
+Erreur dans le fichier bomberstudent_server.c ligne 229, Methode incorrect
+Erreur dans le fichier bomberstudent_server.c ligne 65, Erreur lors de la reception d'une requete du client
+Erreur dans le fichier bomberstudent_server.c ligne 229, Methode incorrect
+----- Log processus 7786 (timestamp : 1542996956) -----
+Erreur dans le fichier bomberstudent_server.c ligne 229, Methode incorrect
+Erreur dans le fichier bomberstudent_server.c ligne 65, Erreur lors de la reception d'une requete du client
+Erreur dans le fichier bomberstudent_server.c ligne 229, Methode incorrect
+----- Log processus 7837 (timestamp : 1542997005) -----
+Erreur dans le fichier bomberstudent_server.c ligne 229, Methode incorrect
+Erreur dans le fichier bomberstudent_server.c ligne 65, Erreur lors de la reception d'une requete du client
+Erreur dans le fichier bomberstudent_server.c ligne 229, Methode incorrect
+rs du bind de la socket
+----- Fin log processus 7841 (temps en seconde : 0) -----
+----- Log processus 8029 (timestamp : 1542997106) -----
+Erreur dans le fichier bomberstudent_server.c ligne 229, Methode incorrect
+Erreur dans le fichier bomberstudent_server.c ligne 65, Erreur lors de la reception d'une requete du client
+Erreur dans le fichier bomberstudent_server.c ligne 229, Methode incorrect
+----- Log processus 8125 (timestamp : 1542997177) -----
+Erreur dans le fichier bomberstudent_server.c ligne 229, Methode incorrect
+Erreur dans le fichier bomberstudent_server.c ligne 65, Erreur lors de la reception d'une requete du client
+Erreur dans le fichier bomberstudent_server.c ligne 229, Methode incorrect
+Erreur dans le fichier server_tcp.c ligne 81, Impossible d'envoyer les données : Broken pipe
+Erreur dans le fichier bomberstudent_server.c ligne 293, Impossible de repondre à la requete du client
+Erreur dans le fichier bomberstudent_server.c ligne 39, Impossible d'avertir le client de l'erreur
+Erreur dans le fichier bomberstudent_server.c ligne 65, Erreur lors de la reception d'une requete du client
+Erreur dans le fichier bomberstudent_server.c ligne 229, Methode incorrect
+----- Log processus 8198 (timestamp : 1542997238) -----
+Erreur dans le fichier bomberstudent_server.c ligne 229, Methode incorrect
+Erreur dans le fichier bomberstudent_server.c ligne 65, Erreur lors de la reception d'une requete du client
+Erreur dans le fichier bomberstudent_server.c ligne 229, Methode incorrect
+Erreur dans le fichier server_tcp.c ligne 81, Impossible d'envoyer les données : Broken pipe
+Erreur dans le fichier bomberstudent_server.c ligne 293, Impossible de repondre à la requete du client
+Erreur dans le fichier bomberstudent_server.c ligne 39, Impossible d'avertir le client de l'erreur
+Erreur dans le fichier bomberstudent_server.c ligne 65, Erreur lors de la reception d'une requete du client
+Erreur dans le fichier bomberstudent_server.c ligne 229, Methode incorrect
+Erreur dans le fichier server_tcp.c ligne 81, Impossible d'envoyer les données : Broken pipe
+Erreur dans le fichier bomberstudent_server.c ligne 293, Impossible de repondre à la requete du client
+Erreur dans le fichier bomberstudent_server.c ligne 39, Impossible d'avertir le client de l'erreur
+Erreur dans le fichier bomberstudent_server.c ligne 65, Erreur lors de la reception d'une requete du client
+----- Fin log processus 8198 (temps en seconde : 28) -----

+ 5 - 1
Serveur/main.c

@@ -33,10 +33,14 @@ void handler(int sig){
 
 /* --- Fonctions publiques --- */
 void notify_close(int code){
+    char codestr[3];
+    memset(codestr, 0, 3);
+    sprintf(codestr, "%d", code);
     //Encode la reponse
     JsonEncoder je;
     ini_encoder(&je);
-    add_integer(&je, "status", code);
+    add_string(&je, "statut", codestr);
+    add_string(&je, "message", "Server close");
     //Avertit tous les clients
     notify_all("POST", "server/end", &je);
 }

BIN
Serveur/test