summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Ivy.pm11
-rw-r--r--test.pl2
2 files changed, 12 insertions, 1 deletions
diff --git a/Ivy.pm b/Ivy.pm
index 854bffe..05fa108 100644
--- a/Ivy.pm
+++ b/Ivy.pm
@@ -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})
}
}
diff --git a/test.pl b/test.pl
index 53567de..32b7a50 100644
--- a/test.pl
+++ b/test.pl
@@ -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;