chiark / gitweb /
fixes
[hippotat.git] / server
diff --git a/server b/server
index 68f854148152d69ab01074407cc55276b982d4ab..b9aa6f26beacdd612905926996d7c4ae05cfc70d 100755 (executable)
--- a/server
+++ b/server
@@ -12,6 +12,8 @@ from twisted.web.server import NOT_DONE_YET
 
 import syslog
 
+import traceback
+
 clients = { }
 
 #---------- "router" ----------
@@ -136,10 +138,13 @@ class Client():
 
 def process_request(request, desca):
   # find client, update config, etc.
-  metadata = request.args['m']
+  metadata = request.args[b'm'][0]
   metadata = metadata.split(b'\r\n')
   (ci_s, pw, tro) = metadata[0:3]
   desca['m[0,2]'] = [ci_s, tro]
+  ci_s = ci_s.decode('utf-8')
+  tro = int(tro)
+  desca['tro']= tro
   ci = ipaddr(ci_s)
   desca['ci'] = ci
   cl = clients[ci]
@@ -150,7 +155,7 @@ def process_request(request, desca):
     raise ValueError('tro must be %d' % cl.target_requests_outstanding)
 
   try:
-    d = request.args['d']
+    d = request.args[b'd']
     desca['d'] = d
   except KeyError: d = ''
 
@@ -174,11 +179,11 @@ class IphttpResource(twisted.web.resource.Resource):
     desca = {'d': None}
     try: process_request(request, desca)
     except Exception as e:
-      emsg = repr(e)
+      emsg = traceback.format_exc()
       log_http(desca, 'EXCEPTION ' + emsg)
       request.setHeader('Content-Type','text/plain; charset="utf-8"')
       request.setResponseCode(400)
-      return emsg.encode('utf-8')
+      return (emsg + ' # ' + repr(desca) + '\r\n').encode('utf-8')
     log_http(desca, '... [%s]' % id(request))
     return NOT_DONE_YET