summaryrefslogtreecommitdiff
path: root/Ivy.pm
diff options
context:
space:
mode:
authordamiano2000-03-09 15:40:57 +0000
committerdamiano2000-03-09 15:40:57 +0000
commitdbd739a4ae41e487eb9bf345c1ac8ff128123956 (patch)
tree33a7d5bbefaf7d61e9e99e72cb722c7437b5e5d1 /Ivy.pm
parent2a3fda472d67ff16485a652a6df4e25dcf541533 (diff)
downloadivy-perl-dbd739a4ae41e487eb9bf345c1ac8ff128123956.zip
ivy-perl-dbd739a4ae41e487eb9bf345c1ac8ff128123956.tar.gz
ivy-perl-dbd739a4ae41e487eb9bf345c1ac8ff128123956.tar.bz2
ivy-perl-dbd739a4ae41e487eb9bf345c1ac8ff128123956.tar.xz
Mauvais copier coller : boucle infinie
Diffstat (limited to 'Ivy.pm')
-rw-r--r--Ivy.pm110
1 files changed, 55 insertions, 55 deletions
diff --git a/Ivy.pm b/Ivy.pm
index deede7c..9ca3875 100644
--- a/Ivy.pm
+++ b/Ivy.pm
@@ -25,7 +25,7 @@ use Time::Gettimeofday ;
use vars qw($VERSION);
-$VERSION = '4.2';
+$VERSION = '4.3';
#############################################################################
#### PROTOTYPES #####
@@ -1051,10 +1051,10 @@ sub _getMessages ($$)
# les facons dont un couple d'applis connectee peuevent sortir et
# eviter les dead lock qui doivent subsister.
if (defined ($localLoopSel)) {
- $self->_removeFileDescriptor ($self, $appSock);
+ $self->_removeFileDescriptor ($appSock);
}
else {
- $self->_removeFileDescriptor ($self, $appSock);
+ $self->_removeFileDescriptor ($appSock);
}
return;
}
@@ -1291,61 +1291,61 @@ sub _inetAdrByName ($$) {
############### PROCEDURE REMOVE FILE DESCRIPTOR
sub _removeFileDescriptor ($$)
{
- my ($self, $fd) = @_;
-
- my $diedAppName;
-
- # on s'est deja occupe de lui
- return unless exists $self->[sockList]->{$fd};
- # printf ("DBG> _removeFileDescriptor IN thread %s\n", ${Thread->self});
-
- # on efface les structures de donnees associees au fd
- # on vire ce fd des fd a scruter dans la bcle d'evenements
- # uniquement si on est dans le thread principal
- # sinon le select merde salement sur ce coup
- &$fileEventFunc ($fd, '') ;
- delete $self->[sendRegList]{$fd};
- delete $self->[sockList]{$fd};
- delete $self->[buffByConn]->{$fd};
-
- $fd->close();
-
- EXT_LOOP:
- foreach my $name (keys %{$self->[appliList]}) {
- foreach my $fdp (@{$self->[appliList]{$name}}) {
- if ($fd eq $fdp) {
- $diedAppName = $name;
- @{$self->[appliList]{$name}} =
- grep ($_ ne $fdp, @{$self->[appliList]{$name}});
- if (scalar (@{$self->[appliList]{$name}}) == 0) {
- delete $self->[appliList]->{$name}
- }
- last EXT_LOOP;
+ my ($self, $fd) = @_;
+
+ my $diedAppName;
+
+ # on s'est deja occupe de lui
+ return unless exists $self->[sockList]->{$fd};
+ # printf ("DBG> _removeFileDescriptor IN thread %s\n", ${Thread->self});
+
+ # on efface les structures de donnees associees au fd
+ # on vire ce fd des fd a scruter dans la bcle d'evenements
+ # uniquement si on est dans le thread principal
+ # sinon le select merde salement sur ce coup
+ &$fileEventFunc ($fd, '') ;
+ delete $self->[sendRegList]{$fd};
+ delete $self->[sockList]{$fd};
+ delete $self->[buffByConn]->{$fd};
+
+ $fd->close();
+
+ EXT_LOOP:
+ foreach my $name (keys %{$self->[appliList]}) {
+ foreach my $fdp (@{$self->[appliList]{$name}}) {
+ if ($fd eq $fdp) {
+ $diedAppName = $name;
+ @{$self->[appliList]{$name}} =
+ grep ($_ ne $fdp, @{$self->[appliList]{$name}});
+ if (scalar (@{$self->[appliList]{$name}}) == 0) {
+ delete $self->[appliList]->{$name}
}
+ last EXT_LOOP;
}
}
-
- unless (defined $diedAppName) {
- warn "Ivy::__removeFileDescriptor : deconnection de NONAME\n" if $^W;
- return;
- }
-
- my $addrInet = (grep ($self->[cnnxion]{$_} eq $diedAppName,
- keys %{$self->[cnnxion]}))[0];
-
- unless (defined $addrInet) {
- die "ERREUR _removeFileDescriptor deconnection de $diedAppName ".
- "addrInet not defined\n";
- return;
- }
-
- #printf "DBG> _removeFileDescriptor : deconnection de %s ($diedAppName)\n", _inetAdrByName ($diedAppName);
-
- delete $self->[cnnxion]{$addrInet};
-
- # on vire l'entree correspondant a ce canal dans la liste des
- # regexps par canal
- $self->_scanConnStatus () ;
+ }
+
+ unless (defined $diedAppName) {
+ warn "Ivy::__removeFileDescriptor : deconnection de NONAME\n" if $^W;
+ return;
+ }
+
+ my $addrInet = (grep ($self->[cnnxion]{$_} eq $diedAppName,
+ keys %{$self->[cnnxion]}))[0];
+
+ unless (defined $addrInet) {
+ die "ERREUR _removeFileDescriptor deconnection de $diedAppName ".
+ "addrInet not defined\n";
+ return;
+ }
+
+ #printf "DBG> _removeFileDescriptor : deconnection de %s ($diedAppName)\n", _inetAdrByName ($diedAppName);
+
+ delete $self->[cnnxion]{$addrInet};
+
+ # on vire l'entree correspondant a ce canal dans la liste des
+ # regexps par canal
+ $self->_scanConnStatus () ;
}