diff options
-rw-r--r-- | Ivy.pm | 11 | ||||
-rw-r--r-- | test.pl | 2 |
2 files changed, 12 insertions, 1 deletions
@@ -1940,6 +1940,17 @@ sub _univSend ($$$) select (undef, $win, undef, undef); } } else { + if ($!{EWOULDBLOCK}) { + # Aucun octet n'a été envoyé, mais le send ne rend pas 0 + # car 0 peut être une longueur passée au send, donc dans ce cas + # send renvoie -1 et met errno a EWOULDBLOCK + _callCongestionCb ($self, $fd, 1); + if ($self->[blockOnSlowAgent]) { + my $win = ''; + vec($win, fileno ($fd), 1) = 1; + select (undef, $win, undef, undef); + } + } $self->_removeFileDescriptor ($fd, '_univSend') unless ($!{EAGAIN} || $!{EWOULDBLOCK}|| $!{EINTR} || $!{EMSGSIZE} || $!{ENOBUFS}) } } @@ -19,6 +19,6 @@ print "ok 1\n"; # of the test code): Ivy->init(-loopMode => 'LOCAL', -appName => 'testivy', - -ivyBus => '127.255.255.2552508'); + -ivyBus => '127.255.255.255:2508'); 1; |