[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [gpsd-dev] gpsd doesn't terminate but crash with a SIGINT.
From: |
Nuno Gonçalves |
Subject: |
Re: [gpsd-dev] gpsd doesn't terminate but crash with a SIGINT. |
Date: |
Sun, 12 Jun 2016 23:18:46 +0100 |
Any chance to give a look at this?
I refreshed the patch:
diff --git a/gpsd.c b/gpsd.c
index d98d446..1521045 100644
--- a/gpsd.c
+++ b/gpsd.c
@@ -1839,6 +1839,7 @@ int main(int argc, char *argv[])
struct gps_device_t *device;
int i, option;
int msocks[2] = {-1, -1};
+ bool device_opened = false;
bool go_background = true;
volatile bool in_restart;
@@ -2057,9 +2058,28 @@ int main(int argc, char *argv[])
gpsd_log(&context.errout, LOG_ERROR,
"initial GPS device %s open failed\n",
argv[i]);
+ } else {
+ device_opened = true;
}
}
+ if (
+#ifdef CONTROL_SOCKET_ENABLE
+ control_socket == NULL
+#endif
+#if defined(CONTROL_SOCKET_ENABLE) && defined(SYSTEMD_ENABLE)
+ &&
+#endif
+#ifdef SYSTEMD_ENABLE
+ sd_socket_count <= 0
+#endif
+ && !device_opened) {
+ gpsd_log(&context.errout, LOG_ERROR,
+ "can't run with neither control socket nor devices open\n");
+ exit(EXIT_FAILURE);
+ }
+
+
/* drop privileges */
if (0 == getuid()) {
struct passwd *pw;
Thanks,
Nuno
On Thu, Apr 14, 2016 at 2:14 AM, Nuno Gonçalves <address@hidden> wrote:
> On Thu, Apr 14, 2016 at 1:53 AM, Gary E. Miller <address@hidden> wrote:
>> Yo Nuno!
>>
>> You say:
>>
>>> + "can't run with no devices open\n");
>>
>> But, gpsd can run with no devices opened, if started with the -F
>> control-socket option. Does your patch allow for that?
>
> I believe this would:
>
> --- a/gpsd.c
> +++ b/gpsd.c
> @@ -1835,6 +1835,7 @@ int main(int argc, char *argv[])
> struct gps_device_t *device;
> int i, option;
> int msocks[2] = {-1, -1};
> + bool device_opened = false;
> bool go_background = true;
> volatile bool in_restart;
>
> @@ -2053,9 +2054,27 @@ int main(int argc, char *argv[])
> gpsd_log(&context.errout, LOG_ERROR,
> "initial GPS device %s open failed\n",
> argv[i]);
> + } else {
> + device_opened = true;
> }
> }
>
> + if (
> +#ifdef CONTROL_SOCKET_ENABLE
> + control_socket == NULL
> +#endif
> +#if defined(CONTROL_SOCKET_ENABLE) && defined(SYSTEMD_ENABLE)
> + &&
> +#endif
> +#ifdef SYSTEMD_ENABLE
> + sd_socket_count <= 0
> +#endif
> + && !device_opened) {
> + gpsd_log(&context.errout, LOG_ERROR,
> + "can't run with neither control socket nor devices open\n");
> + exit(EXIT_FAILURE);
> + }
> +
> /* drop privileges */
> if (0 == getuid()) {
> struct passwd *pw;
diff
Description: Binary data
- Re: [gpsd-dev] gpsd doesn't terminate but crash with a SIGINT.,
Nuno Gonçalves <=