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
