mirror of https://github.com/D4-project/d4-core
fix: [server] duplicate connections
parent
0816a93efe
commit
40ff019e2f
|
@ -83,6 +83,7 @@ class D4_Server(Protocol, TimeoutMixin):
|
||||||
self.data_saved = False
|
self.data_saved = False
|
||||||
self.update_stream_type = True
|
self.update_stream_type = True
|
||||||
self.first_connection = True
|
self.first_connection = True
|
||||||
|
self.duplicate = False
|
||||||
self.ip = None
|
self.ip = None
|
||||||
self.source_port = None
|
self.source_port = None
|
||||||
self.stream_max_size = None
|
self.stream_max_size = None
|
||||||
|
@ -135,6 +136,7 @@ class D4_Server(Protocol, TimeoutMixin):
|
||||||
def connectionLost(self, reason):
|
def connectionLost(self, reason):
|
||||||
redis_server_stream.sadd('ended_session', self.session_uuid)
|
redis_server_stream.sadd('ended_session', self.session_uuid)
|
||||||
self.setTimeout(None)
|
self.setTimeout(None)
|
||||||
|
if not self.duplicate:
|
||||||
redis_server_stream.srem('active_connection:{}'.format(self.type), '{}:{}'.format(self.ip, self.uuid))
|
redis_server_stream.srem('active_connection:{}'.format(self.type), '{}:{}'.format(self.ip, self.uuid))
|
||||||
redis_server_stream.srem('active_connection', '{}'.format(self.uuid))
|
redis_server_stream.srem('active_connection', '{}'.format(self.uuid))
|
||||||
if self.uuid:
|
if self.uuid:
|
||||||
|
@ -235,6 +237,7 @@ class D4_Server(Protocol, TimeoutMixin):
|
||||||
# same IP-type for an UUID
|
# same IP-type for an UUID
|
||||||
logger.warning('is using the same UUID for one type, ip={} uuid={} type={} session_uuid={}'.format(ip, data_header['uuid_header'], data_header['type'], self.session_uuid))
|
logger.warning('is using the same UUID for one type, ip={} uuid={} type={} session_uuid={}'.format(ip, data_header['uuid_header'], data_header['type'], self.session_uuid))
|
||||||
redis_server_metadata.hset('metadata_uuid:{}'.format(data_header['uuid_header']), 'Error', 'Error: This UUID is using the same UUID for one type={}'.format(data_header['type']))
|
redis_server_metadata.hset('metadata_uuid:{}'.format(data_header['uuid_header']), 'Error', 'Error: This UUID is using the same UUID for one type={}'.format(data_header['type']))
|
||||||
|
self.duplicate = True
|
||||||
self.transport.abortConnection()
|
self.transport.abortConnection()
|
||||||
return 1
|
return 1
|
||||||
else:
|
else:
|
||||||
|
@ -243,6 +246,7 @@ class D4_Server(Protocol, TimeoutMixin):
|
||||||
if data_header['type'] == 254:
|
if data_header['type'] == 254:
|
||||||
logger.warning('a type 2 packet must be sent, ip={} uuid={} type={} session_uuid={}'.format(ip, data_header['uuid_header'], data_header['type'], self.session_uuid))
|
logger.warning('a type 2 packet must be sent, ip={} uuid={} type={} session_uuid={}'.format(ip, data_header['uuid_header'], data_header['type'], self.session_uuid))
|
||||||
redis_server_metadata.hset('metadata_uuid:{}'.format(data_header['uuid_header']), 'Error', 'Error: a type 2 packet must be sent, type={}'.format(data_header['type']))
|
redis_server_metadata.hset('metadata_uuid:{}'.format(data_header['uuid_header']), 'Error', 'Error: a type 2 packet must be sent, type={}'.format(data_header['type']))
|
||||||
|
self.duplicate = True
|
||||||
self.transport.abortConnection()
|
self.transport.abortConnection()
|
||||||
return 1
|
return 1
|
||||||
self.type = data_header['type']
|
self.type = data_header['type']
|
||||||
|
|
Loading…
Reference in New Issue