--- rpl/src/instructions_c4.c 2023/11/24 08:10:18 1.82 +++ rpl/src/instructions_c4.c 2023/11/24 09:12:57 1.83 @@ -664,6 +664,8 @@ instruction_close(struct_processus *s_et struct_objet *s_objet_argument; + unsigned char socket_en_ecoute; + (*s_etat_processus).erreur_execution = d_ex; if ((*s_etat_processus).affichage_arguments == 'Y') @@ -852,6 +854,7 @@ instruction_close(struct_processus *s_et socket = -1; socket_connectee = d_faux; + socket_en_ecoute = 'Y'; while(l_element_courant != NULL) { @@ -863,6 +866,8 @@ instruction_close(struct_processus *s_et (*(*l_element_courant).donnee).objet)).socket; socket_connectee = (*((struct_socket *) (*(*l_element_courant).donnee).objet)).socket_connectee; + socket_en_ecoute = (*((struct_socket *) + (*(*l_element_courant).donnee).objet)).socket_en_ecoute; if (l_element_precedent == NULL) { @@ -903,11 +908,12 @@ instruction_close(struct_processus *s_et if (socket_connectee == d_vrai) { -printf("shutdown\n"); - shutdown(socket, SHUT_RDWR); + if (socket_en_ecoute == 'N') + { + shutdown(socket, SHUT_RDWR); + } } -printf("close %d\n", socket); if (close(socket) != 0) { liberation(s_etat_processus, s_objet_argument); @@ -915,7 +921,6 @@ printf("close %d\n", socket); (*s_etat_processus).erreur_systeme = d_es_erreur_fichier; return; } -printf("close %d OK\n", socket); if ((*((struct_socket *) (*s_objet_argument).objet)).effacement == 'Y') {