elif daddr == c.vaddr or daddr not in c.vnetwork:
lt('inbound')
queue_inbound(packet)
- elif daddr == relay:
+ elif daddr == c.relay:
lt('discard relay')
log_discard(packet, iface, saddr, daddr, 'relay')
else:
self._ip = ip
self.cc = cc
self._rq = collections.deque() # requests
- # self._pq = PacketQueue(...)
- # plus from config:
- # .max_batch_down
- # .max_queue_time
- # .target_requests_outstanding
+ self._pq = PacketQueue(str(ip), self.cc.max_queue_time)
if ip not in c.vnetwork:
raise ValueError('client %s not in vnetwork' % ip)
- self._pq = PacketQueue(str(ip), self.max_queue_time)
-
if ip in clients:
raise ValueError('multiple client cfg sections for %s' % ip)
clients[ip] = self
def new_request(self, request):
request.setHeader('Content-Type','application/octet-stream')
- cl = reactor.callLater(self.http_timeout, self._req_cancel, request)
+ cl = reactor.callLater(self.cc.http_timeout, self._req_cancel, request)
nf = request.notifyFinish()
nf.addErrback(self._req_error, request)
nf.addCallback(self._req_fin, request, cl)
# request, and also some non-expired packets
self._pq.process((lambda: request.sentLength),
(lambda d: self._req_write(request, d)),
- self.max_batch_down)
+ self.cc.max_batch_down)
assert(request.sentLength)
self._rq.popleft()
self._log(DBG.HTTP, 'complete', idof=request)
# round again, looking for more to do
- while len(self._rq) > self.target_requests_outstanding:
+ while len(self._rq) > self.cc.target_requests_outstanding:
request = self._rq.popleft()
self._log(DBG.HTTP, 'CHKO above target, returning empty', idof=request)
request.finish()
ci = ipaddr(ci_s)
desca['ci'] = ci
cl = clients[ci]
- if pw != cl.pw: raise ValueError('bad password')
+ if pw != cl.cc.password: raise ValueError('bad password')
desca['pwok']=True
- if tro != cl.target_requests_outstanding:
- raise ValueError('tro must be %d' % cl.target_requests_outstanding)
+ if tro != cl.cc.target_requests_outstanding:
+ raise ValueError('tro must be %d' % cl.cc.target_requests_outstanding)
- if cto < cl.http_timeout:
- raise ValueError('cto must be >= %d' % cl.http_timeout)
+ if cto < cl.cc.http_timeout:
+ raise ValueError('cto must be >= %d' % cl.cc.http_timeout)
try:
d = request.args[b'd'][0]
for (ci,cs) in putative_clients.items():
cc = ConfigResults()
- sections = cfg_process_client_common(cc,c.server,cs,ci):
+ sections = cfg_process_client_common(cc,c.server,cs,ci)
if not sections: continue
cfg_process_client_limited(cc,c.server,sections, 'max_batch_down')
cfg_process_client_limited(cc,c.server,sections, 'max_queue_time')
- Client(ci)
+ Client(ci, cc)
try:
- c.relay = cfg.get(c.server, 'relay')
+ c.vrelay = cfg.get(c.server, 'vrelay')
except NoOptionError:
for search in c.vnetwork.hosts():
if search == c.vaddr: continue
- c.relay = search
+ c.vrelay = search
break
cfg_process_ipif(c,