TL;DR Jason thinks there's a bug in xastir_udp_cleint. possible fix below. I'm running the ADS-B script for the first time on a new system, odroid N2 (64 bit ARM, standard odroid distribution of Ubuntu 18.04 LTS). xastir_udp_client fails frequently (like every second or third execution) with recfrom: invalid argument. full output is:
$ ./bin/ads-b.pl --dump1090host 192.168.88.29 planes 10163 xastir user PLANES pass 10163 ABDD4A 427kn 358� - (U.S.) ABDD4A 37175ft ABDD4A (U.S.) PLANES>APRS::TACTICAL :ABDD4A=ABDD4A (U.S.) recvfrom: Invalid argument Trying next address to send to Received NACK from Xastir: Callsign/Passcode don't match? $ This same activity results in xastir outputting the following: Received datagram from ::1: PLANES,10163,-identify -identify x_spider udp: user:PLANES pass:10163 Received datagram from ::1: PLANES,10163 PLANES>APRS::TACTICAL :ABDD4A=ABDD4A (U.S.) x_spider udp: user:PLANES pass:10163 Received datagram from 127.0.0.1: ACKXastir received UDP packet without "TO_INET," string After a bit of googling and RTFMing, I found this in the recvfrom(2) man page: In this case, addrlen is a value-result argument. Before the call, it should be initialized to the size of the buffer associated with src_addr. I found that, when I added a length = sizeof() call as TFM specifies, my problem went away. The suspect code is in try_exchange(). In the current code length is uninitialized. $ diff xastir_udp_client.c xastir_udp_client.c-dist 101d100 < length = sizeof(from); $ That's immediately before the call to recvfrom(). Before adding this call it would run for a few seconds before exiting. With the fix it's been running for at least 10 minutes or so, no errors. -Jason kg4wsv _______________________________________________ Xastir mailing list Xastir@lists.xastir.org http://xastir.org/mailman/listinfo/xastir