mirror of
https://github.com/9001/copyparty.git
synced 2025-08-17 09:02:15 -06:00
conn. keep-alive
This commit is contained in:
parent
78c99e524b
commit
75cae0261f
|
@ -30,25 +30,31 @@ class HttpCli(object):
|
||||||
self.log_func(self.log_src, msg)
|
self.log_func(self.log_src, msg)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
headerlines = self.read_header()
|
while self.ok:
|
||||||
if not self.ok:
|
headerlines = self.read_header()
|
||||||
return
|
if not self.ok:
|
||||||
|
return
|
||||||
|
|
||||||
self.headers = {}
|
self.headers = {}
|
||||||
mode, self.req, _ = headerlines[0].split(" ")
|
try:
|
||||||
|
mode, self.req, _ = headerlines[0].split(" ")
|
||||||
|
except:
|
||||||
|
self.log("bad headers:\n" + "\n".join(headerlines))
|
||||||
|
self.s.close()
|
||||||
|
return
|
||||||
|
|
||||||
for header_line in headerlines[1:]:
|
for header_line in headerlines[1:]:
|
||||||
k, v = header_line.split(":", 1)
|
k, v = header_line.split(":", 1)
|
||||||
self.headers[k.lower()] = v.strip()
|
self.headers[k.lower()] = v.strip()
|
||||||
|
|
||||||
# self.bufsz = int(self.req.split('/')[-1]) * 1024
|
# self.bufsz = int(self.req.split('/')[-1]) * 1024
|
||||||
|
|
||||||
if mode == "GET":
|
if mode == "GET":
|
||||||
self.handle_get()
|
self.handle_get()
|
||||||
elif mode == "POST":
|
elif mode == "POST":
|
||||||
self.handle_post()
|
self.handle_post()
|
||||||
else:
|
else:
|
||||||
self.loud_reply(u'invalid HTTP mode "{0}"'.format(mode))
|
self.loud_reply(u'invalid HTTP mode "{0}"'.format(mode))
|
||||||
|
|
||||||
def panic(self, msg):
|
def panic(self, msg):
|
||||||
self.log("client disconnected ({0})".format(msg).upper())
|
self.log("client disconnected ({0})".format(msg).upper())
|
||||||
|
@ -79,7 +85,7 @@ class HttpCli(object):
|
||||||
return ret[:-4].decode("utf-8", "replace").split("\r\n")
|
return ret[:-4].decode("utf-8", "replace").split("\r\n")
|
||||||
|
|
||||||
def reply(self, body):
|
def reply(self, body):
|
||||||
header = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nContent-Length: {0}\r\n\r\n".format(
|
header = "HTTP/1.1 200 OK\r\nConnection: Keep-Alive\r\nContent-Type: text/html\r\nContent-Length: {0}\r\n\r\n".format(
|
||||||
len(body)
|
len(body)
|
||||||
).encode(
|
).encode(
|
||||||
"utf-8"
|
"utf-8"
|
||||||
|
@ -87,7 +93,6 @@ class HttpCli(object):
|
||||||
if self.ok:
|
if self.ok:
|
||||||
self.s.send(header + body)
|
self.s.send(header + body)
|
||||||
|
|
||||||
self.s.close()
|
|
||||||
return body
|
return body
|
||||||
|
|
||||||
def loud_reply(self, body):
|
def loud_reply(self, body):
|
||||||
|
@ -188,6 +193,15 @@ class HttpCli(object):
|
||||||
).encode("utf-8")
|
).encode("utf-8")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# TODO: check if actually part of multipart footer
|
||||||
|
buf = self.sr.recv(2)
|
||||||
|
if buf != b"\r\n":
|
||||||
|
raise Exception("oh")
|
||||||
|
except:
|
||||||
|
self.log("client is done")
|
||||||
|
self.s.close()
|
||||||
|
|
||||||
def handle_multipart(self, ofd):
|
def handle_multipart(self, ofd):
|
||||||
tlen = 0
|
tlen = 0
|
||||||
hashobj = hashlib.sha512()
|
hashobj = hashlib.sha512()
|
||||||
|
|
|
@ -200,12 +200,16 @@ class MpSrv(object):
|
||||||
proc.workload += 50
|
proc.workload += 50
|
||||||
|
|
||||||
def debug_load_balancer(self):
|
def debug_load_balancer(self):
|
||||||
while True:
|
last = ""
|
||||||
|
while self.procs:
|
||||||
msg = ""
|
msg = ""
|
||||||
for proc in self.procs:
|
for proc in self.procs:
|
||||||
msg += "{} \033[36m{}\033[0m ".format(
|
msg += "\033[1m{}\033[0;36m{:4}\033[0m ".format(
|
||||||
len(proc.clients), proc.workload
|
len(proc.clients), proc.workload
|
||||||
)
|
)
|
||||||
|
|
||||||
print(msg)
|
if msg != last:
|
||||||
|
last = msg
|
||||||
|
print(msg)
|
||||||
|
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
|
|
Loading…
Reference in a new issue