Hi All,

I've been working a lot with GPSD on a project recently and I've noticed
some strange behaviour. Basically I'm looking for some guidance from the
devs aso to whether what I've discovered is a bug that needs fixing or
whether this is expected behaviour.

Our setup is on a vehicle where there is a primary computer which has the
GPS receiver on it. This runs GPSD and serves out location information
through the JSON interface to a number of devices on the vehicle which need
location. There are currently 3. I am not in control of the software
running on these devices. They were just told to "implement the GPSD spec"
and pointed at the documentation on the website.

One of these devices appears to rolled their own implementation of the
client rather than use an off the shelf library. As a result they had a bug
where they did not read from the TCP socket properly and after about 60
seconds or so they had filled up their TCP receive buffer and were sending
back "TCP Zero Window" messages back to GPSD. This is obviously broken and
we will be getting them to fix their implementation.

*however*, The strange behaviour we noticed was that, when this happened,
it killed GPSD for every client simultaneously. Nobody got JSON data until
this offending client eventually times out and reset its connection. At
which point, all of the other clients would get a burst of data. Then the
offending device reconnected and the saga repeated itself. So, one faulty
client caused all clients to get (effectively) no location data.

This was all observed with GPSD 3.22 on Debian 12. I then created a test
program which replicated the behaviour of the offending device and ran that
on a test box running 3.27.5 and it was still the same.

Is this intended behaviour? Or is there something to investigate here where
clients are isolated from one another so one misbehaving client can't
affect everyone?

Thanks, as always, for the amazing effort you guys do in creating GPSD

Chris

Reply via email to