summaryrefslogtreecommitdiffstats
path: root/ax25ipd
diff options
context:
space:
mode:
Diffstat (limited to 'ax25ipd')
-rw-r--r--ax25ipd/io.c20
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);