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++)
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);
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);
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);