handle aborted connections; fix decompress; set server version

This commit is contained in:
2016-04-29 18:45:51 +02:00
parent d66dc6c66a
commit 41d83be238
+19 -5
View File
@@ -144,7 +144,7 @@ def stodict(msg):
if len(r0) == 1:
return None
if r0[0][0] == '!': # compressed
pk = zlib.uncompress(r0[1])
pk = zlib.decompress(msg[len(r0[0])+1:])
d['ID'] = r0[0][1:]
else:
pk = r0[1]
@@ -439,7 +439,7 @@ def readsock(sock):
opkt = 'ACK'
rmsg = 'ACK'
else:
opkt = dicttos('ACK', rmsg)
opkt = dicttos('ACK', rmsg, host.cver > 1) # clients w/ ver 2+ can cope
ss=sock.sendto(opkt, addr)
if DEBUG > 2: print "sendto1: %s (%s) %s %s" % (addr, len(opkt), op, str(rmsg)[:50])
@@ -490,10 +490,10 @@ def updatecode(ucode, uname):
rmsg = {'csum': icsum, 'code': new_code.encode('base64','strict') }
Host.hosts[uname].cmds.append(('UPD',rmsg))
return fail
#
#
#class HttpServer(BaseHTTPServer.HTTPServer):
#
# Web Server
#
class HttpServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
allow_reuse_address = True
def threaded():
@@ -502,6 +502,20 @@ class HttpServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
#
class HttpHandler(BaseHTTPServer.BaseHTTPRequestHandler):
server_version = "HeartbeatHTTP/%s" % VER
def version_string(self):
return self.server_version
def handle(self):
try:
return BaseHTTPServer.BaseHTTPRequestHandler.handle(self)
except Exception as e:
self.log_error("Request went away: %r", e)
self.close_connection = 1
return
def do_HEAD(self):
self.setheaders(200)