diff options
Diffstat (limited to 'Ivy.pm')
-rw-r--r-- | Ivy.pm | 21 |
1 files changed, 17 insertions, 4 deletions
@@ -881,6 +881,16 @@ sub bindRegexp ($$$;$$) # on rajoute le couple $regexp, $cb dans la liste des messages # qu'on prend + # on teste la validité de l'argument + if (ref ($cb) ne 'ARRAY') { + carp ("Warning binRegexp on $regexp :\nargument 3 (callback) is not correct and will be ignored\n"); + return (); + } + if (ref ($cb->[0]) ne 'CODE') { + carp ("Warning binRegexp on $regexp :\nargument 3 (callback) is not correct and will be ignored\n"); + return (); + } + # on commence par tester si on a un id libere dans le tableau for ($id=0; $id <= ($#{$self->[recCbList]}+1); $id++) { last unless (defined $self->[recCbList][$id]) && @{$self->[recCbList][$id]->[1]}; @@ -891,7 +901,6 @@ sub bindRegexp ($$$;$$) _sendLastRegexpToAllreadyConnected ($self, $id) ; } else { - # on vire le callback, et on se desabonne de cette regexp for (my $id=0; $id <= $#{$self->[recCbList]}; $id++) { @@ -1519,10 +1528,14 @@ sub _getMessages ($$) # on recupere le couple call back, regexp correspondant # a l'identifiant et on appelle la fonction avec les parametres # traites par la regexp - if (ref ($self->[recCbList][$id]) eq 'ARRAY') { - my @cb = @{$self->[recCbList][$id]->[1]}; - my $cb = shift @cb; +# if ((ref ($self->[recCbList][$id]) eq 'ARRAY') && +# (my @cb = @{$self->[recCbList][$id]->[1]})) { + + + if (my @cb = @{$self->[recCbList][$id]->[1]}) { + my $cb = shift @cb; + # cleaning $sendername with previous \004 used for connection status # bindRegexp avancé : on envoie une liste nom adresse port au lieu du nom $senderName = [$senderName, _getHostByAddr ($addr), $peerPort] |