X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udevd.c;h=a926715908bbcbab7d0b6f7cd7c0a85d26a99913;hb=586e1a37eff1ec9b69c0d2953014e7291fb875b5;hp=96d4fbb3be082b918f77ce6a84ab5c9c8101c0ec;hpb=69348b66ff4163a2fbf974bde649e5bc963462b4;p=elogind.git diff --git a/udevd.c b/udevd.c index 96d4fbb3b..a92671590 100644 --- a/udevd.c +++ b/udevd.c @@ -195,7 +195,7 @@ static int running_processes(void) if (f == -1) return -1; - len = read(f, buf, sizeof(buf)); + len = read(f, buf, sizeof(buf)-1); close(f); if (len <= 0) @@ -244,7 +244,7 @@ static int running_processes_in_session(pid_t session, int limit) if (f == -1) continue; - len = read(f, line, sizeof(line)); + len = read(f, line, sizeof(line)-1); close(f); if (len <= 0) @@ -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 */ @@ -610,7 +611,7 @@ static struct uevent_msg *get_netlink_msg(void) pos[0] = '\0'; if (msg->action == NULL) { - err("no ACTION in payload found, skip event '%s'", buffer); + info("no ACTION in payload found, skip event '%s'", buffer); free(msg); return NULL; } @@ -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)); @@ -864,7 +865,7 @@ int main(int argc, char *argv[], char *envp[]) if (errno == EADDRINUSE) dbg("another udevd running, exit"); else - dbg("error initialising udevd socket: %s", strerror(errno)); + dbg("error initializing udevd socket: %s", strerror(errno)); goto exit; }