summaryrefslogtreecommitdiff
path: root/Ivy.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Ivy.pm')
-rw-r--r--Ivy.pm18
1 files changed, 15 insertions, 3 deletions
diff --git a/Ivy.pm b/Ivy.pm
index 78d5cd0..a243e9c 100644
--- a/Ivy.pm
+++ b/Ivy.pm
@@ -1,7 +1,7 @@
#
# Ivy, Perl interface
#
-# Copyright 1997-2008
+# Copyright 1997-2009
# Centre d'Études de la Navigation Aérienne
#
# Authors: Alexandre Bustico <alexandre.bustico@cena.fr>
@@ -361,6 +361,7 @@ use constant appName => $constantIndexer++;
use constant messWhenReady => $constantIndexer++;
use constant uuid => $constantIndexer++;
use constant pongQueue => $constantIndexer++;
+use constant readyToSend => $constantIndexer++;
#############################################################################
#### METHODES PUBLIQUES #####
@@ -683,6 +684,7 @@ sub new ($%)
($self->[useMulticast], $self->[broadcastPort], $self->[broadcastBuses]) =
_parseIvyBusParam ($options{-ivyBus});
+ $self->[readyToSend] = 0;
return ($self);
@@ -1646,8 +1648,11 @@ sub _getMessages ($$)
elsif ($type == ENDREGEXP) { # E N D R E G E X P
# on envoie le message ready uniquement a celui qui nous
- # a envoye le message endregexp
- $self->_sendMsgTo ($appSock, \$self->[messWhenReady]);
+ # a envoye le message endregexp, et uniquement si on a
+ # à la fois envoyé le end regexp, et reçu le endregexp de l'autre
+ if (++$self->[readyToSend] == 2) {
+ $self->_sendMsgTo ($appSock, \$self->[messWhenReady]);
+ }
# on passe de l'etat Connecte a l'etat Ready
$self->[cnnxion]{"$addr:$peerPort"} =~ s/^\004//g;
@@ -1762,6 +1767,13 @@ sub _sendWantedRegexp ($$)
}
# on envoie le message de fin d'envoi de regexps
_univSend ($self, $appSock, sprintf (MSG_FMT, ENDREGEXP, 0, ""));
+
+ # on envoie le message ready uniquement a celui qui nous
+ # a envoye le message endregexp, et uniquement si on a
+ # à la fois envoyé le end regexp, et reçu le endregexp de l'autre
+ if (++$self->[readyToSend] == 2) {
+ $self->_sendMsgTo ($appSock, \$self->[messWhenReady]);
+ }
} # end _sendWantedRegexp
############### METHODE SEND LAST REGEXP TO ALLREADY CONNECTED