--- In aprsisce@..., "Peter Loveall" <pete@...> wrote:
--- In aprsisce@..., "ldeffenb" <kj4erj@> wrote:
5) Corrected the logon string's Version content so we should quit getting the "adjunct HH:MM Missing filter keyword" complaint at login (most of you have probably never noticed anyway).
This would have been noticed as the server "going dumb". If the server's filter is not set properly, then all you will receive is keep-alive comment lines. I highly recommend that you go back to considering the keep-alive comment lines as confirmation that the server is there and functional.
Actually, this would NOT have caused the server dumb. I don't send the filter string with the logon, but send it as a separate command so that I can re-send it if the user re-configures the settings. I only put the vers on the logon line, but prior to the fix, my version string had an embedded space causing the server to THINK I was trying to send a filter.
If you are concerned about if the login was handled correctly, the logresp comment line that is sent after the login contains confirmation of the login, whether it is verified or not, if the filter was set properly, and what server you logged into.
I field and log the logresp line to a debug log just for that reason. However, since the filter isn't on the logon line, it doesn't help me with that.
The keep-alives are generated after 20 seconds of inactivity on the port -from- the server which is every 20 seconds if you don't set a filter and no one sends you a message. If you do your reads as ReadLine with receivetimeout set to 30000, you shouldn't have any hang issues on reading (be sure to encapsulate in try/catch code looking for any exception). If there is an error, close the connection and try to reconnect.
My hang issues are with DNS translations and the initial connect as I'm doing the synchronous socket calls currently. I poll the Window Mobile Communications Manager for status, but sometimes even though it APPEARS to be on-line for data, the gethostbyname() and/or connect() calls take a LONG time to timeout.
I don't issue an recv() call unless an ioctlsocket() shows that there is actually data available for reading, so once I'm connected, hanging is not a problem, just not getting data or an error for an extended time period, what I call the Quiet time limit.
I WILL re-enable counting the keep-alives as non-quiet traffic as soon as I'm happy that my client is actually working correctly. In the meantime, the 10 or so (max) copies that are out there in use shouldn't be doing much to the APRS-IS.
73s to you and keep asking the questions, it's how I learned as much as I think I know!
Lynn (D) - KJ4ERJ