6f340e9462
git-svn-id: https://svn.disconnected-by-peer.at/svn/linamh/trunk/linamh@602 6952d904-891a-0410-993b-d76249ca496b
27 lines
1.1 KiB
Diff
27 lines
1.1 KiB
Diff
If you try to add the same device twice with the hotplug script, gpsd does not
|
|
send any error back to the script, leading to it waiting forever on recv(), and
|
|
blocking gpsd from progressing in it's select loop.
|
|
|
|
This patch makes the daemon write back an error to the control socket (in
|
|
addition the the normal debug output), so that the hotplug script does not
|
|
block for the socket, and everything proceeds much better.
|
|
|
|
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
|
|
|
|
diff -Nuar --exclude '*~' gpsd-2.33.orig/gpsd.c gpsd-2.33/gpsd.c
|
|
--- gpsd-2.33.orig/gpsd.c 2006-06-09 05:34:09.000000000 -0700
|
|
+++ gpsd-2.33/gpsd.c 2006-08-13 15:42:25.152204904 -0700
|
|
@@ -1048,9 +1048,10 @@
|
|
(void)write(sfd, "ERROR\n", 6);
|
|
} else if (buf[0] == '+') {
|
|
p = snarfline(buf+1, &stash);
|
|
- if (find_device(stash))
|
|
+ if (find_device(stash)) {
|
|
gpsd_report(1,"<= control(%d): %s already active \n", sfd, stash);
|
|
- else {
|
|
+ (void)write(sfd, "ERROR\n", 6);
|
|
+ } else {
|
|
gpsd_report(1,"<= control(%d): adding %s \n", sfd, stash);
|
|
if (open_device(stash))
|
|
(void)write(sfd, "OK\n", 3);
|