--- rpl/src/instructions_r4.c 2012/03/01 10:14:07 1.50 +++ rpl/src/instructions_r4.c 2012/06/18 15:15:31 1.54 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.1.7 + RPL/2 (R) version 4.1.9 Copyright (C) 1989-2012 Dr. BERTRAND Joël This file is part of RPL/2. @@ -874,6 +874,8 @@ instruction_read(struct_processus *s_eta struct flock lock; + struct pollfd poll_fd; + struct sockaddr_un adresse_unix; struct sockaddr_in adresse_ipv4; # ifdef IPV6 @@ -2264,7 +2266,6 @@ printf("L=%d\n", longueur_enregistrement tampon_lecture, longueur_questure, MSG_PEEK | MSG_DONTWAIT, (struct sockaddr *) &adresse_ipv6, &longueur_adresse); - # else if ((*s_etat_processus).langue == 'F') { @@ -2276,6 +2277,9 @@ printf("L=%d\n", longueur_enregistrement printf("+++Warning : IPv6 support " "unavailable\n"); } + + longueur_adresse = 0; + longueur_effective = 0; # endif } else @@ -2414,6 +2418,16 @@ printf("L=%d\n", longueur_enregistrement { if (longueur_effective < longueur_questure) { + poll_fd.fd = (*((struct_socket *) + (*s_objet_argument_1).objet)).socket; + poll_fd.events = POLLIN; + + if (poll(&poll_fd, 1, 0) > 0) + { + free(tampon_lecture); + continue; + } + liberation(s_etat_processus, s_objet_argument_1); free(tampon_lecture); @@ -2778,6 +2792,9 @@ printf("L=%d\n", longueur_enregistrement printf("+++Warning : IPv6 support " "unavailable\n"); } + + longueur_adresse = 0; + longueur_effective = 0; # endif } else