chiark / gitweb /
force event socket buffer size to 16MB
[elogind.git] / udevd.c
diff --git a/udevd.c b/udevd.c
index e227a64d71de32ee82a29f85ed6def978e33709f..aaf80a2314e007cff05e6c9033dce68766f850ad 100644 (file)
--- a/udevd.c
+++ b/udevd.c
@@ -410,8 +410,9 @@ recheck:
 
                /* limit timeout during initialization phase */
                if (init_phase) {
-                       timeout = UDEVD_INIT_EVENT_TIMEOUT;
-                       dbg("initialization phase, limit timeout to %i seconds", UDEVD_INIT_EVENT_TIMEOUT);
+                       if (timeout > UDEVD_INIT_EVENT_TIMEOUT)
+                               timeout = UDEVD_INIT_EVENT_TIMEOUT;
+                       dbg("initialization phase, timeout %i seconds", timeout);
                }
 
                /* move event with expired timeout to the exec list */
@@ -685,7 +686,7 @@ static void reap_sigchilds(void)
 static int init_udevd_socket(void)
 {
        struct sockaddr_un saddr;
-       const int buffersize = 1024 * 1024;
+       const int buffersize = 16 * 1024 * 1024;
        socklen_t addrlen;
        const int feature_on = 1;
        int retval;
@@ -703,7 +704,7 @@ static int init_udevd_socket(void)
        }
 
        /* set receive buffersize */
-       setsockopt(udevd_sock, SOL_SOCKET, SO_RCVBUF, &buffersize, sizeof(buffersize));
+       setsockopt(udevd_sock, SOL_SOCKET, SO_RCVBUFFORCE, &buffersize, sizeof(buffersize));
 
        /* the bind takes care of ensuring only one copy running */
        retval = bind(udevd_sock, (struct sockaddr *) &saddr, addrlen);
@@ -722,7 +723,7 @@ static int init_udevd_socket(void)
 static int init_uevent_netlink_sock(void)
 {
        struct sockaddr_nl snl;
-       const int buffersize = 1024 * 1024;
+       const int buffersize = 16 * 1024 * 1024;
        int retval;
 
        memset(&snl, 0x00, sizeof(struct sockaddr_nl));
@@ -737,7 +738,7 @@ static int init_uevent_netlink_sock(void)
        }
 
        /* set receive buffersize */
-       setsockopt(uevent_netlink_sock, SOL_SOCKET, SO_RCVBUF, &buffersize, sizeof(buffersize));
+       setsockopt(uevent_netlink_sock, SOL_SOCKET, SO_RCVBUFFORCE, &buffersize, sizeof(buffersize));
 
        retval = bind(uevent_netlink_sock, (struct sockaddr *) &snl,
                      sizeof(struct sockaddr_nl));