As soon as the socket is bound it will receive messages. Make sure the recieve buffer size is increased before the first message is received.
Signed-off-by: Jan Klötzke <[email protected]> --- libbb/xconnect.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/libbb/xconnect.c b/libbb/xconnect.c index e9a2470e4..5b32599ca 100644 --- a/libbb/xconnect.c +++ b/libbb/xconnect.c @@ -422,14 +422,10 @@ int FAST_FUNC create_and_bind_to_netlink(int proto, int grp, unsigned rcvbuf) struct sockaddr_nl sa; int fd; - memset(&sa, 0, sizeof(sa)); - sa.nl_family = AF_NETLINK; - sa.nl_pid = getpid(); - sa.nl_groups = grp; fd = xsocket(AF_NETLINK, SOCK_DGRAM, proto); - xbind(fd, (struct sockaddr *) &sa, sizeof(sa)); - close_on_exec_on(fd); + // Set receive buffer size before binding the socket. We want to have + // enough space before we start receiving messages. if (rcvbuf != 0) { // SO_RCVBUFFORCE (root only) can go above net.core.rmem_max sysctl setsockopt_SOL_SOCKET_int(fd, SO_RCVBUF, rcvbuf); @@ -444,6 +440,13 @@ int FAST_FUNC create_and_bind_to_netlink(int proto, int grp, unsigned rcvbuf) # endif } + memset(&sa, 0, sizeof(sa)); + sa.nl_family = AF_NETLINK; + sa.nl_pid = getpid(); + sa.nl_groups = grp; + xbind(fd, (struct sockaddr *) &sa, sizeof(sa)); + close_on_exec_on(fd); + return fd; } #endif -- 2.20.1 _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
