summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFRIGN <dev@frign.de>2014-11-27 23:05:37 +0100
committersin <sin@2f30.org>2014-11-27 23:54:46 +0000
commit21210b4497205453c3e03dc6168113c73839b167 (patch)
treea367b337cfeca52f720d65d420b3aac85db7944f
parent8cbaea4e44107b352fb923c11db08f94fba49bf4 (diff)
Don't lock up on blocking call_out
Since the av-refactor, we keep a call active as long as there is a listener or a sender. In case we don't have a listener, don't lock up in the sending function and rather just fall-through in case the write blocks. We can't do that as easily with the file-data-code, because data- integrity is very important there.
-rw-r--r--ratox.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/ratox.c b/ratox.c
index 2ea83b8..4f2d704 100644
--- a/ratox.c
+++ b/ratox.c
@@ -501,12 +501,8 @@ cbcalldata(void *av, int32_t cnum, const int16_t *data, uint16_t len, void *udat
while (len > 0) {
n = write(f->fd[FCALL_OUT], &buf[wrote], len);
if (n < 0) {
- if (errno == EPIPE) {
+ if (errno == EPIPE)
f->av.state &= ~INCOMING;
- break;
- } else if (errno == EWOULDBLOCK) {
- continue;
- }
break;
} else if (n == 0) {
break;