4141class ClientDisconnect (Exception ): pass
4242class RequestSizeExceeded (Exception ): pass
4343
44+ connection_timeout = 60 # seconds, timeout for tcp transactions
45+ buffer_size = 4096 # bytes, corresponds to client-side buffer size value
46+
4447def handle_connection (conn , client ):
4548 """
4649 Handling a connection.
@@ -53,33 +56,32 @@ def handle_connection(conn, client):
5356
5457 Data is expected to be received in JSON format and it is also sent back to
5558 the client in JSON format. The connection has a server side timeout and the
56- amount of data accepted in a single request is limited by the server. The
57- corresponding parameters are defined in the config module. Whenever
58- possible, error messages are sent back to the client.
59+ amount of data accepted in a single request is limited by the server.
60+ Whenever possible, error messages are sent back to the client.
5961
6062 Parameters:
6163 conn (socket or SSLSocket): connection socket
6264 client (tuple(str, int)): client IP and port
6365 """
6466 ip , port = client
6567 log = utility .ServerLogger (ip , port )
66- log .info ('connection accepted' )
68+ log .tcp ('connection accepted' )
6769
68- conn .settimeout (config . connection_timeout )
70+ conn .settimeout (connection_timeout )
6971
7072 try :
7173 try :
7274 # receive data from client:
7375 request = bytearray ()
7476
7577 while True :
76- data = conn .recv (config . buffer_size )
78+ data = conn .recv (buffer_size )
7779 if not data : raise ClientDisconnect
7880 request += data
7981 if len (request ) > config .request_size_max : raise RequestSizeExceeded
8082 if request .endswith (b'EOT\0 ' ): break
8183
82- log .info (f'received { len (request )} bytes: { request } ' )
84+ log .tcp (f'received { len (request )} bytes: { request } ' )
8385 request = request [:- 4 ] # strip EOT
8486 request = json .loads (request .decode ())
8587
@@ -122,7 +124,7 @@ def handle_connection(conn, client):
122124 response = json .dumps (response ).encode ()
123125
124126 conn .sendall (response )
125- log .info (f'responding: { response } ' )
127+ log .tcp (f'responding: { response } ' )
126128
127129 except BrokenPipeError :
128130 log .error ('connection closed by client after sending request' )
@@ -132,7 +134,7 @@ def handle_connection(conn, client):
132134 log .error ('unexpected exception on the server:\n ' + traceback .format_exc ())
133135 finally :
134136 conn .close ()
135- log .info ('connection closed by server' )
137+ log .tcp ('connection closed by server' )
136138
137139def secure_socket (socket ):
138140 """
@@ -153,6 +155,7 @@ def secure_socket(socket):
153155 context .load_cert_chain (
154156 certfile = utility .abs_path (config .tls_cert ),
155157 keyfile = utility .abs_path (config .tls_key ))
158+
156159 print ('TLS enabled' )
157160
158161 return context .wrap_socket (socket , server_side = True )
0 commit comments