mirror of
https://github.com/DerTyp7/docker_minecraft_server_auto_starter.git
synced 2025-10-28 20:32:16 +01:00
Fix request handler restart issue
This commit is contained in:
@@ -10,11 +10,17 @@ class RequestHandler(threading.Thread):
|
||||
self.port = port
|
||||
self.docker_handler = docker_handler
|
||||
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
server_address = ('localhost', self.port)
|
||||
print(f'Starting up on {server_address[0]} port {server_address[1]}')
|
||||
self.sock.bind(server_address)
|
||||
self.sock.listen(1)
|
||||
|
||||
def restart(self):
|
||||
print(f'Restarting request handler for port {self.port}')
|
||||
self.sock.close()
|
||||
self.__init__(self.port, self.docker_handler)
|
||||
|
||||
def run(self):
|
||||
while True:
|
||||
try:
|
||||
@@ -23,12 +29,18 @@ class RequestHandler(threading.Thread):
|
||||
try:
|
||||
print('Connection from', self.client_address)
|
||||
self.handle_request()
|
||||
except Exception as e:
|
||||
print(
|
||||
f'Error in request handler for port {self.port}: {e}')
|
||||
print('Restarting request handler...')
|
||||
self.restart()
|
||||
finally:
|
||||
self.connection.close()
|
||||
self.restart()
|
||||
except Exception as e:
|
||||
print(f'Error in request handler for port {self.port}: {e}')
|
||||
print('Restarting request handler...')
|
||||
self.__init__(self.port, self.docker_handler)
|
||||
self.restart()
|
||||
|
||||
def handle_request(self):
|
||||
print(f'Handling request on port {self.port}')
|
||||
@@ -38,7 +50,8 @@ class RequestHandler(threading.Thread):
|
||||
container_ip)
|
||||
isStarting = self.docker_handler.is_container_starting(container)
|
||||
request = self.connection.recv(1024)
|
||||
if request[0] == 0x10:
|
||||
print(f'Received request: {request}')
|
||||
if request[0] == 0x10 or request[0] == 0x15:
|
||||
if b'\x01' in request:
|
||||
print(f'Detected ping request for {container_ip}')
|
||||
self.forward_request_to_placeholder(request, isStarting)
|
||||
@@ -56,9 +69,12 @@ class RequestHandler(threading.Thread):
|
||||
elif request[0] == 0xFE:
|
||||
print(f'Detected legacy ping request for {container_ip}')
|
||||
self.forward_request_to_placeholder(request, isStarting)
|
||||
|
||||
else:
|
||||
print(f'No container mapped to port {self.port}')
|
||||
print(f'Detected unknown request for {container_ip}')
|
||||
self.forward_request_to_placeholder(request, isStarting)
|
||||
|
||||
else:
|
||||
print(f'No container mapped to port {self.port}')
|
||||
|
||||
def forward_request_to_placeholder(self, request, isStarting=False):
|
||||
print('Forwarding request to placeholder server')
|
||||
@@ -71,8 +87,11 @@ class RequestHandler(threading.Thread):
|
||||
if not ip:
|
||||
print('No placeholder server IP found')
|
||||
return
|
||||
server_socket.connect(
|
||||
(ip, 25565))
|
||||
server_socket.sendall(request)
|
||||
response = server_socket.recv(1024)
|
||||
self.connection.sendall(response)
|
||||
try:
|
||||
server_socket.connect((ip, 25565))
|
||||
server_socket.sendall(request)
|
||||
response = server_socket.recv(1024)
|
||||
self.connection.sendall(response)
|
||||
except Exception as e:
|
||||
print(f'Error while handling request on port {self.port}: {e}')
|
||||
self.restart()
|
||||
|
||||
Reference in New Issue
Block a user