X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=hippotat.git;a=blobdiff_plain;f=server;h=3781d5607ab95d99e2bb4fb7be5e213420742d8b;hp=8a16c34a390d6d195430f5b7f3e06163283b65ff;hb=ba5630fdc8ae56885fb3d9ba5dd05a7f0806f86f;hpb=3d003cdd48892205849a0dd17ccbf4c6d3962cbc diff --git a/server b/server index 8a16c34..3781d56 100755 --- a/server +++ b/server @@ -47,13 +47,12 @@ class Client(): # plus from config: # .max_batch_down # .max_queue_time - # .max_request_time # .target_requests_outstanding if ip not in c.network: raise ValueError('client %s not in network' % ip) - for k in ('max_batch_down','max_queue_time','max_request_time', + for k in ('max_batch_down','max_queue_time','http_timeout', 'target_requests_outstanding'): req = cfg.getint(cs, k) limit = cfg.getint('limits',k) @@ -93,7 +92,7 @@ class Client(): def new_request(self, request): request.setHeader('Content-Type','application/octet-stream') - reactor.callLater(self.max_request_time, self._req_cancel, request) + reactor.callLater(self.http_timeout, self._req_cancel, request) request.notifyFinish().addErrback(self._req_error, request) self._rq.append(request) self._check_outbound() @@ -143,11 +142,11 @@ def process_request(request, desca): # find client, update config, etc. 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, pw, tro, cto) = metadata[0:4] + desca['m[0,2:3]'] = [ci_s, tro, cto] ci_s = ci_s.decode('utf-8') - tro = int(tro) - desca['tro']= tro + tro = int(tro); desca['tro']= tro + cto = int(cto); desca['cto']= cto ci = ipaddr(ci_s) desca['ci'] = ci cl = clients[ci] @@ -157,6 +156,9 @@ def process_request(request, desca): if tro != cl.target_requests_outstanding: raise ValueError('tro must be %d' % cl.target_requests_outstanding) + if cto < cl.http_timeout: + raise ValueError('cto must be >= %d' % cl.http_timeout) + try: d = request.args[b'd'][0] desca['d'] = d