PFClient 2.1.27 Stops Communicating over a TCP Socket

#1
I'm running PFClient with my own Mode S / ADS-B decoder which monitors the TCP Clients that are connected to it's TCP Server.

PFClient operates as TCP Client reading SBS data and my software operates as a TCP Server.

I have used PFClient version PF2.1.13 for as long as 20 days (continously) without a "Broken pipe" socket error.

Over a 17 hour period, PFClient version PF2.1.27 caused a "Broken pipe" socket error 714 times.

Here is an example of the messages that come out of my software when PFClient stops communicating:

TCP Server ERROR Returned from send - send_status = -1

TCP Server ERROR Returned from send - save_errno = 32, error_string = Broken pipe

SBS1 TCP Server 5 IPV4 0.0.0.0:45204 at Local Time = Saturday November 15, 2014 21:58:35.297
ERROR Socket Write Error - disconnected from TCP Client 127.0.0.1:34798

SBS1 TCP Server 5 IPV4 0.0.0.0:45204 at Local Time = Saturday November 15, 2014 21:58:40.202
Accepted Socket - connected to TCP Client 127.0.0.1:35362

What a "Broken Pipe" means:

See: http://stackoverflow.com/questions/...es-a-broken-pipe-exception-mean-to-the-socket

The program on your side still has its socket wide open, but the socket on the other side is no longer in communication, and didn't go through the standard "close pipe" procedure. This can happen if the other side lost power suddenly, if the physical line was severed, or whatever.

This is disconcerting as this "Broken Pipe" error message means that PFClient stopped communicating with my program using the TCP Socket.

PFClient keeps on running and in fact it always reconnects to the Socket. I also checked my stats at http://www.pinkfroot.com/sharestatus.asp?sharecode=MY_PF_ID and the stats are always updated each time I refresh the web page.


Here is how I configured PFClient

# pfclient --config
[2014-11-16T06:36:42.669Z] PF Client Version: PF2.1.27
prompt: Receiver Type: (30003)
prompt: Connection Type: (network)
prompt: Enter home location: LAT,LONG
prompt: Enter username supplied by pinkfroot: ME
prompt: Enter password supplied by pinkfroot: PASS
prompt: IP Address: (127.0.0.1)
prompt: TCP Port: (30003) 45204

Fortunately, the disconnect and reconnect are recorded in the pfclient_log log file that registers this event.

# more pfclient_log
>>>>>> Starting pfclient Feeder on Sat Nov 15 20:26:36 PST 2014 <<<<<<
[2014-11-16T04:26:37.334Z] PF Client Version: PF2.1.27
[2014-11-16T04:26:37.772Z] Connecting to 127.0.0.1:45204
[2014-11-16T04:26:37.782Z] Connected to receiver
[2014-11-16T05:58:35.172Z] Connection to receiver closed
[2014-11-16T05:58:40.177Z] Reconnected to the receiver
[2014-11-16T05:58:40.179Z] Reconnected to the receiver

Note that PFClient records UTC time which is 8 hours ahead of my timezone. I'm not sure why it recorded a reconnection twice when it happened only once.

After examining the "Broken Pipes" messages they mostly occur during light traffic times where is it possible for PFClient to not receive any data at all.

What are the reasons that PFClient would close a TCP Socket?

Does it expect a keep-alive message if the data messages stop being sent to it?

If so what how long will PFClient run without receiving a message such that it will close the TCP Socket? I'm seeing back to back Disconnect (Broken Pipe) / Reconnect sequences that are as little as 2.9 seconds apart.

If PFClient expects a "dummy" SBS1 message when no data is available, what should it be? Every SBS1 "MSG" message has an ICAO identifer. Should I use an illegal ICAO identifer (000000)? Or how about a MSG1 with just 21 commas? Or how about a "CLK" message which is a legal Basestation message but it is a meaningless message in this context.

See the following URL for more information about SBS1 Basestation Messages:

http://www.homepages.mcb.net/bones/SBS/Article/Barebones42_Socket_Data.htm

Blort
 

Mark Daniels

Administrator
Staff member
#2
Hi Blort,

Thank you for reporting this and for the very useful detail.
As per my direct email we have uploaded a new client version that hopefully improves this situation.

With thanks and best regards,

Mark
 

Mark Daniels

Administrator
Staff member
#6
Ah yes indeed.

We have two types - the full featured client is running at version 2.2.14
Our simpler client is v1.11 so you are on the current latest for this one.

Sorry for the confusion and thank you for sharing.

Best Regards,
Mark
 

Mark Daniels

Administrator
Staff member
#9
I can see your connection at this end but not data.
Please can you email me the configuration settings that you used.
Also is Dump1090 seeing data currently?
 
#11
Client Version: PF2.1.27

PFID: PF6xxx
Last Uploaded: 0 at 2014-11-27T17:34:41.699Z
Total Uploaded: 0

Connected to a 30003 datasource via 127.0.0.1:30003
 
#13
just download the latest ver..

Client Version: PF2.2.16

PFID: PF6xxxx
Last Uploaded: 2 at 2014-11-27T18:35:54.562Z
Total Uploaded: 146

Connected to a 30003 datasource via 127.0.0.1:30003

GPS Status:
 
Last edited:
Top