diff options
-rw-r--r-- | ax25ipd/io.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/ax25ipd/io.c b/ax25ipd/io.c index 4277612..a293d69 100644 --- a/ax25ipd/io.c +++ b/ax25ipd/io.c @@ -620,6 +620,16 @@ int io_error( fprintf (stderr, "message was %d bytes long.\n", bufsize); return 0; } + if (errno == ENETDOWN || errno == ENETRESET || + errno == ENETUNREACH || errno == EHOSTDOWN || + errno == EHOSTUNREACH || errno == ENONET || + errno == EPERM) { + /* host closed his axip receiver or dropped the line */ + perror("error after sending on to axip partner. ignoring."); + LOGL4("error after sending on to axip partner: %s; ignoring!\n", strerror(errno)); + + return 0; + } if (errno == ENOBUFS) { /* congestion; sleep + retry */ LOGL4("send congestion on raw ip, sleeping and retrying!\n"); usleep(100000); @@ -638,6 +648,16 @@ int io_error( fprintf(stderr, "message was %d bytes long.\n", bufsize); return 0; } + if (errno == ENETDOWN || errno == ENETRESET || + errno == ENETUNREACH || errno == EHOSTDOWN || + errno == EHOSTUNREACH || errno == ENONET || + errno == EPERM) { + /* host closed his axudp receiver or dropped the line */ + perror("error after sending to axudp partner. ignoring."); + LOGL4("error after sending to axudp partner: %s; ignoring!\n", strerror(errno)); + + return 0; + } if (errno == ENOBUFS) { /* congestion; sleep + retry */ LOGL4("send congestion on udp, sleeping and retrying!\n"); usleep(100000); |