From bb18a39b4a7f79f7bfe4861fdb8860e3eef58246 Mon Sep 17 00:00:00 2001 From: Thomas Osterried Date: Sun, 13 Apr 2008 22:50:26 +0000 Subject: io.c: WRITE to TTY returns -1 EAGAIN if ttyqueue is full. The behaviour to give up here was wrong. --- ax25ipd/io.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ax25ipd/io.c b/ax25ipd/io.c index 2e3ec07..8bcb4a5 100644 --- a/ax25ipd/io.c +++ b/ax25ipd/io.c @@ -541,6 +541,7 @@ int where; /* line in the code where this function was called */ #ifdef EAGAIN if (errno == EAGAIN) { +#ifdef notdef /* select() said that data is available, but recvfrom sais * EAGAIN - i really do not know what's the sense in this.. */ if (dir == READ_MSG && oops != TTY_MODE /* && != TCP_MODE, if we'd implement this */ ) @@ -550,6 +551,18 @@ int where; /* line in the code where this function was called */ fprintf(stderr, "behaviour. This is probably a result of compile-time environment.\n"); fprintf(stderr, "Mode 0x%2.2x, LINE: %d. During %s\n", mode, where, (dir == READ_MSG ? "READ" : "WRITE")); exit(3); +#else + int ret = 0; + if (dir == READ_MSG) { + LOGL4("read / recv returned -1 EAGAIN\n"); + ret = 0; + } else if (dir == SEND_MSG) { + LOGL4("write / send returned -1 EAGAIN, sleeping and retrying!\n"); + usleep(100000); + ret = 1; + } + return ret; +#endif } #endif -- cgit v1.2.3