socket reconnect on timeout testing

This commit is contained in:
craigerl 2020-12-04 07:21:37 -08:00
parent e171e16854
commit 712d66c389
1 changed files with 9 additions and 31 deletions

View File

@ -113,6 +113,7 @@ def setup_connection():
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((CONFIG['aprs']['host'], 14580))
sock.settimeout(60)
except Exception, e:
print "Unable to connect to APRS-IS server.\n"
print str(e)
@ -493,7 +494,7 @@ def main(args=args):
password = CONFIG['aprs']['password']
LOG.info("LOGIN to APRSD with user '%s'" % user)
#tn.write("user %s pass %s vers aprsd 0.99\n" % (user, password))
sock.send("user %s pass %s vers aprsd 0.99\n" % (user, password))
sock.send("user %s pass %s vers https://github.com/craigerl/aprsd 2.00\n" % (user, password))
time.sleep(2)
@ -505,9 +506,6 @@ def main(args=args):
while True:
line = ""
try:
#for char in tn.read_until("\n", 100):
# line = line + char
#line = line.replace('\n', '')
line = sock_file.readline().strip()
LOG.info(line)
searchstring = '::%s' % user
@ -586,32 +584,6 @@ def main(args=args):
send_message(fromcall, reply.rstrip())
# LOCATION (l) "8 Miles E Auburn CA 1771' 38.91547,-120.99500 0.1h ago"
# elif re.search('^l', message):
# # get my last location, get descriptive name from weather service
# try:
# url = "http://api.aprs.fi/api/get?name=" + fromcall + "&what=loc&apikey=104070.f9lE8qg34L8MZF&format=json"
# response = urllib.urlopen(url)
# aprs_data = json.loads(response.read())
# lat = aprs_data['entries'][0]['lat']
# lon = aprs_data['entries'][0]['lng']
# try: # altitude not always provided
# alt = aprs_data['entries'][0]['altitude']
# except:
# alt = 0
# altfeet = int(alt * 3.28084)
# aprs_lasttime_seconds = aprs_data['entries'][0]['lasttime']
# aprs_lasttime_seconds = aprs_lasttime_seconds.encode('ascii',errors='ignore') #unicode to ascii
# delta_seconds = time.time() - int(aprs_lasttime_seconds)
# delta_hours = delta_seconds / 60 / 60
# url2 = "https://forecast.weather.gov/MapClick.php?lat=" + str(lat) + "&lon=" + str(lon) + "&FcstType=json"
# response2 = urllib.urlopen(url2)
# wx_data = json.loads(response2.read())
# reply = wx_data['location']['areaDescription'] + " " + str(altfeet) + "' " + str(lat) + "," + str(lon) + " " + str("%.1f" % round(delta_hours,1)) + "h ago"
# reply = reply.encode('ascii', errors='ignore') # unicode to ascii
# send_message(fromcall, reply.rstrip())
# except:
# reply = "Unable to find you (send beacon?)"
# send_message(fromcall, reply.rstrip())
elif re.search('^[lL]', message):
# get last location of a callsign, get descriptive name from weather service
try:
@ -690,7 +662,13 @@ def main(args=args):
LOG.error("Error in mainline loop:")
LOG.error("%s" % str(e))
LOG.error("Exiting.")
# sys.exit(1) # merely a suggestion
if str(e) == "timed out":
LOG.error("Attempting to reconnect.")
sock.shutdown(0)
sock.close()
setup_connection()
sock.send("user %s pass %s vers https://github.com/craigerl/aprsd 2.00\n" % (user, password))
continue
os._exit(1)
# end while True