summaryrefslogtreecommitdiff
path: root/net/bird/files/patch-sysdep-unix-io.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/bird/files/patch-sysdep-unix-io.c')
-rw-r--r--net/bird/files/patch-sysdep-unix-io.c80
1 files changed, 0 insertions, 80 deletions
diff --git a/net/bird/files/patch-sysdep-unix-io.c b/net/bird/files/patch-sysdep-unix-io.c
deleted file mode 100644
index 8802bc3a2475..000000000000
--- a/net/bird/files/patch-sysdep-unix-io.c
+++ /dev/null
@@ -1,80 +0,0 @@
-diff --git sysdep/unix/io.c sysdep/unix/io.c
-index 486319f..8198743 100644
---- sysdep/unix/io.c
-+++ sysdep/unix/io.c
-@@ -1211,7 +1211,7 @@ sk_setup(sock *s)
- if (s->iface)
- {
- #ifdef SO_BINDTODEVICE
-- struct ifreq ifr;
-+ struct ifreq ifr = {};
- strcpy(ifr.ifr_name, s->iface->name);
- if (setsockopt(s->fd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr)) < 0)
- ERR("SO_BINDTODEVICE");
-@@ -1854,6 +1854,20 @@ sk_write(sock *s)
- }
-
- void
-+sk_err(sock *s, int revents)
-+{
-+ int se = 0, sse = sizeof(se);
-+ if (revents & POLLERR)
-+ if (getsockopt(s->fd, SOL_SOCKET, SO_ERROR, &se, &sse) < 0)
-+ {
-+ log(L_ERR "IO: Socket error: SO_ERROR: %m");
-+ se = 0;
-+ }
-+
-+ s->err_hook(s, se);
-+}
-+
-+void
- sk_dump_all(void)
- {
- node *n;
-@@ -2163,7 +2177,7 @@ io_loop(void)
- int steps;
-
- steps = MAX_STEPS;
-- if (s->fast_rx && (pfd[s->index].revents & (POLLIN | POLLHUP | POLLERR)) && s->rx_hook)
-+ if (s->fast_rx && (pfd[s->index].revents & POLLIN) && s->rx_hook)
- do
- {
- steps--;
-@@ -2185,6 +2199,7 @@ io_loop(void)
- goto next;
- }
- while (e && steps);
-+
- current_sock = sk_next(s);
- next: ;
- }
-@@ -2208,18 +2223,26 @@ io_loop(void)
- goto next2;
- }
-
-- if (!s->fast_rx && (pfd[s->index].revents & (POLLIN | POLLHUP | POLLERR)) && s->rx_hook)
-+ if (!s->fast_rx && (pfd[s->index].revents & POLLIN) && s->rx_hook)
- {
- count++;
- io_log_event(s->rx_hook, s->data);
- sk_read(s, pfd[s->index].revents);
- if (s != current_sock)
-- goto next2;
-+ goto next2;
-+ }
-+
-+ if (pfd[s->index].revents & (POLLHUP | POLLERR))
-+ {
-+ sk_err(s, pfd[s->index].revents);
-+ goto next2;
- }
-+
- current_sock = sk_next(s);
- next2: ;
- }
-
-+
- stored_sock = current_sock;
- }
- }