Local client now detects when server close the connection
This commit is contained in:
parent
02838658b0
commit
8b6f72587d
@ -53,41 +53,50 @@ def attach(pid, socketfile):
|
|||||||
sys.stderr.write("\n")
|
sys.stderr.write("\n")
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
from select import select
|
import select
|
||||||
|
mypoll = select.poll()
|
||||||
|
|
||||||
|
mypoll.register(sys.stdin.fileno(), select.POLLIN | select.POLLPRI)
|
||||||
|
mypoll.register(sock.fileno(), select.POLLIN | select.POLLPRI)
|
||||||
try:
|
try:
|
||||||
while True:
|
while True:
|
||||||
rl, wl, xl = select([sys.stdin, sock], [], [])
|
for fd, flag in mypoll.poll():
|
||||||
|
if flag & (select.POLLERR | select.POLLHUP | select.POLLNVAL):
|
||||||
|
sock.close()
|
||||||
|
print("Connection closed.")
|
||||||
|
return 1
|
||||||
|
|
||||||
if sys.stdin in rl:
|
if fd == sys.stdin.fileno():
|
||||||
line = sys.stdin.readline().strip()
|
line = sys.stdin.readline().strip()
|
||||||
if line == "exit" or line == "quit":
|
if line == "exit" or line == "quit":
|
||||||
return 0
|
return 0
|
||||||
elif line == "reload":
|
elif line == "reload":
|
||||||
import os, signal
|
import os, signal
|
||||||
os.kill(pid, signal.SIGHUP)
|
os.kill(pid, signal.SIGHUP)
|
||||||
print("Reload signal sent. Please wait...")
|
print("Reload signal sent. Please wait...")
|
||||||
|
|
||||||
elif line == "shutdown":
|
elif line == "shutdown":
|
||||||
import os, signal
|
import os, signal
|
||||||
os.kill(pid, signal.SIGTERM)
|
os.kill(pid, signal.SIGTERM)
|
||||||
print("Shutdown signal sent. Please wait...")
|
print("Shutdown signal sent. Please wait...")
|
||||||
|
|
||||||
elif line == "kill":
|
elif line == "kill":
|
||||||
import os, signal
|
import os, signal
|
||||||
os.kill(pid, signal.SIGKILL)
|
os.kill(pid, signal.SIGKILL)
|
||||||
print("Signal sent...")
|
print("Signal sent...")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
elif line == "stack" or line == "stacks":
|
elif line == "stack" or line == "stacks":
|
||||||
import os, signal
|
import os, signal
|
||||||
os.kill(pid, signal.SIGUSR1)
|
os.kill(pid, signal.SIGUSR1)
|
||||||
print("Debug signal sent. Consult logs.")
|
print("Debug signal sent. Consult logs.")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
sock.send(line.encode() + b'\r\n')
|
sock.send(line.encode() + b'\r\n')
|
||||||
|
|
||||||
|
if fd == sock.fileno():
|
||||||
|
sys.stdout.write(sock.recv(2048).decode())
|
||||||
|
|
||||||
if sock in rl:
|
|
||||||
sys.stdout.write(sock.recv(2048).decode())
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
pass
|
pass
|
||||||
except:
|
except:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user