chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] Patches from Harald Hoyer <harald@redhat.com>.
[elogind.git]
/
udevsend.c
diff --git
a/udevsend.c
b/udevsend.c
index 842a2a4bc4178578b6663b74dc54cbfaa2a3de29..84c46bc0c286b3c117123d77c4ba27a6c702482c 100644
(file)
--- a/
udevsend.c
+++ b/
udevsend.c
@@
-95,9
+95,9
@@
static void run_udev(const char *subsystem)
switch (pid) {
case 0:
/* child */
switch (pid) {
case 0:
/* child */
- execl(UDEV_BIN,
"udev"
, subsystem, NULL);
+ execl(UDEV_BIN,
UDEV_BIN
, subsystem, NULL);
dbg("exec of child failed");
dbg("exec of child failed");
- exit(1);
+
_
exit(1);
break;
case -1:
dbg("fork of child failed");
break;
case -1:
dbg("fork of child failed");
@@
-117,13
+117,12
@@
int main(int argc, char* argv[])
unsigned long long seq;
int retval = 1;
int loop;
unsigned long long seq;
int retval = 1;
int loop;
- struct timespec tspec;
int sock = -1;
struct sockaddr_un saddr;
socklen_t addrlen;
int started_daemon = 0;
int sock = -1;
struct sockaddr_un saddr;
socklen_t addrlen;
int started_daemon = 0;
-
init_logging
("udevsend");
+
logging_init
("udevsend");
dbg("version %s", UDEV_VERSION);
subsystem = get_subsystem(argv[1]);
dbg("version %s", UDEV_VERSION);
subsystem = get_subsystem(argv[1]);
@@
-160,6
+159,8
@@
int main(int argc, char* argv[])
goto fallback;
}
goto fallback;
}
+ set_cloexec_flag(sock, 1);
+
memset(&saddr, 0x00, sizeof(struct sockaddr_un));
saddr.sun_family = AF_LOCAL;
/* use abstract namespace for socket path */
memset(&saddr, 0x00, sizeof(struct sockaddr_un));
saddr.sun_family = AF_LOCAL;
/* use abstract namespace for socket path */
@@
-174,8
+175,8
@@
int main(int argc, char* argv[])
strfieldcpy(msg.subsystem, subsystem);
/* If we can't send, try to start daemon and resend message */
strfieldcpy(msg.subsystem, subsystem);
/* If we can't send, try to start daemon and resend message */
- loop =
UDEVSEND_CONNECT_RETRY
;
- while (
loop--
) {
+ loop =
SEND_WAIT_MAX_SECONDS * SEND_WAIT_LOOP_PER_SECOND
;
+ while (
--loop
) {
retval = sendto(sock, &msg, sizeof(struct hotplug_msg), 0,
(struct sockaddr *)&saddr, addrlen);
if (retval != -1) {
retval = sendto(sock, &msg, sizeof(struct hotplug_msg), 0,
(struct sockaddr *)&saddr, addrlen);
if (retval != -1) {
@@
-198,10
+199,8
@@
int main(int argc, char* argv[])
dbg("daemon started");
started_daemon = 1;
} else {
dbg("daemon started");
started_daemon = 1;
} else {
- dbg("retry to connect %d", UDEVSEND_CONNECT_RETRY - loop);
- tspec.tv_sec = 0;
- tspec.tv_nsec = 100000000; /* 100 millisec */
- nanosleep(&tspec, NULL);
+ dbg("retry to connect %d", SEND_WAIT_MAX_SECONDS * SEND_WAIT_LOOP_PER_SECOND - loop);
+ usleep(1000 * 1000 / SEND_WAIT_LOOP_PER_SECOND);
}
}
}
}
@@
-213,5
+212,7
@@
exit:
if (sock != -1)
close(sock);
if (sock != -1)
close(sock);
+ logging_close();
+
return retval;
}
return retval;
}