Skip to content

Commit 577753c

Browse files
committed
Handle some expiration corner cases
1 parent 23208bb commit 577753c

3 files changed

Lines changed: 4 additions & 6 deletions

File tree

receptor/buffers/file.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import collections
21
import logging
32
import uuid
43
import json

receptor/protocol.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import datetime
22
import asyncio
33
import logging
4+
import time
45
import json
56
import uuid
67
from collections import deque
@@ -88,8 +89,7 @@ async def wait_greeting(self):
8889
break
8990
else:
9091
logger.error("Handshake failed!")
91-
# TODO: Trigger disconnection
92-
# otherwise we could get stuck here
92+
self.transport.close()
9393
await asyncio.sleep(.1)
9494
logger.debug("handshake complete, starting normal handle loop")
9595
self.loop.create_task(self.connection.message_handler(self.incoming_buffer)) # Duplicated (see handle_handshake)?
@@ -104,6 +104,7 @@ def send_handshake(self):
104104
msg = json.dumps({
105105
"cmd": "HI",
106106
"id": self.receptor.node_id,
107+
"expire_time": time.time() + 10,
107108
}).encode("utf-8")
108109
self.transport.write(msg + DELIM)
109110

@@ -185,7 +186,6 @@ def data_received(self, data):
185186
raw_payload=payload,
186187
directive=directive
187188
)
188-
# TODO: Response expiration task?
189189
# TODO: Persistent registry?
190190
self.loop.create_task(self.receptor.router.send(inner_env,
191191
expected_response=True))

receptor/receptor.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ async def watch_expire(self):
4646
for ident, message in buffer:
4747
message_actual = json.loads(message)
4848
if "expire_time" in message_actual and message_actual['expire_time'] < time.time():
49+
buffer.read_message(ident, remove=True)
4950
logger.info("Expiring message {}:{}".format(ident, connection["id"]))
50-
expired_message = buffer.read_message(ident, remove=True)
5151
# TODO: Do something with expired message
5252
if connection["last"] + 86400 < time.time():
5353
logger.info("Expiring connection {}".format(connection["id"]))
@@ -110,7 +110,6 @@ def remove_connection(self, protocol_obj):
110110
self.router.debug_router()
111111
self.update_connection_manifest(connection_node)
112112
notify_connections += self.connections[connection_node]
113-
# TODO: Broadcast update, set timer for full expiration
114113
for active_connection in notify_connections:
115114
active_connection.send_route_advertisement(self.router.get_edges())
116115

0 commit comments

Comments
 (0)