chiark / gitweb /
man: clarify $attr{} parent searching
[elogind.git] / udevd.c
diff --git a/udevd.c b/udevd.c
index 66a410ec778b24100ca83b81893a550cb9041106..d6977e9655de8442195c8ba98b9c728c3c452abc 100644 (file)
--- 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);
@@ -265,6 +269,9 @@ static void msg_queue_insert(struct udevd_uevent_msg *msg)
 
        msg->queue_time = time(NULL);
 
+       export_event_state(msg, EVENT_QUEUED);
+       info("seq %llu queued, '%s' '%s'\n", msg->seqnum, msg->action, msg->subsystem);
+
        strlcpy(filename, udev_root, sizeof(filename));
        strlcat(filename, "/" EVENT_SEQNUM, sizeof(filename));
        fd = open(filename, O_WRONLY|O_TRUNC|O_CREAT, 0644);
@@ -277,9 +284,6 @@ static void msg_queue_insert(struct udevd_uevent_msg *msg)
                close(fd);
        }
 
-       export_event_state(msg, EVENT_QUEUED);
-       info("seq %llu queued, '%s' '%s'\n", msg->seqnum, msg->action, msg->subsystem);
-
        /* run one event after the other in debug mode */
        if (debug_trace) {
                list_add_tail(&msg->node, &running_list);