X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udevd.c;h=c895c1dc6a4a4384fb1d4280d0eb8772e1a0db50;hb=0654a21c78caf312fa612059725d1b47c78e7802;hp=66a410ec778b24100ca83b81893a550cb9041106;hpb=c70560feef0eb61a150cd2f956f0beead4313ffe;p=elogind.git diff --git a/udevd.c b/udevd.c index 66a410ec7..c895c1dc6 100644 --- a/udevd.c +++ b/udevd.c @@ -115,7 +115,7 @@ static int udev_event_process(struct udevd_uevent_msg *msg) sigaction(SIGHUP, &act, NULL); /* trigger timeout to prevent hanging processes */ - alarm(UDEV_ALARM_TIMEOUT); + alarm(UDEV_EVENT_TIMEOUT); /* reconstruct event environment from message */ for (i = 0; msg->envp[i]; i++) @@ -131,6 +131,10 @@ static int udev_event_process(struct udevd_uevent_msg *msg) retval = udev_device_event(&rules, udev); + /* rules may change/disable the timeout */ + if (udev->event_timeout >= 0) + alarm(udev->event_timeout); + /* run programs collected by RUN-key*/ if (retval == 0 && !udev->ignore_device && udev_run) retval = udev_rules_run(udev);