chiark / gitweb /
[PATCH] handle whole hotplug event with udevd/udev
[elogind.git] / udevd.c
diff --git a/udevd.c b/udevd.c
index 3ad8c47f22887660e05d5e6ee30d2b63c58e4a40..bd36d2c192d1e606a84b03e75c1689931cb8e7b4 100644 (file)
--- a/udevd.c
+++ b/udevd.c
@@ -131,6 +131,7 @@ static void udev_run(struct hotplug_msg *msg)
        case 0:
                /* child */
                close(udevsendsock);
+               logging_close();
                execle(udev_bin, "udev", msg->subsystem, NULL, msg->envp);
                dbg("exec of child failed");
                _exit(1);
@@ -290,7 +291,7 @@ static void handle_udevsend_msg(int sock)
        /* copy environment buffer and reconstruct envp */
        memcpy(msg->envbuf, usend_msg.envbuf, envbuf_size);
        bufpos = 0;
-       for (i = 0; (bufpos < envbuf_size) && (i < HOTPLUG_NUM_ENVP-1); i++) {
+       for (i = 0; (bufpos < envbuf_size) && (i < HOTPLUG_NUM_ENVP-2); i++) {
                int keylen;
                char *key;
 
@@ -313,6 +314,7 @@ static void handle_udevsend_msg(int sock)
                if (strncmp(key, "SEQNUM=", 7) == 0)
                        msg->seqnum = strtoull(&key[7], NULL, 10);
        }
+       msg->envp[i++] = "MANAGED_EVENT=1";
        msg->envp[i] = NULL;
 
        /* if no seqnum is given, we move straight to exec queue */