aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bb/asyncrpc/serv.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bb/asyncrpc/serv.py')
-rw-r--r--lib/bb/asyncrpc/serv.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/bb/asyncrpc/serv.py b/lib/bb/asyncrpc/serv.py
index f0be9a6cd..a66117aca 100644
--- a/lib/bb/asyncrpc/serv.py
+++ b/lib/bb/asyncrpc/serv.py
@@ -39,10 +39,14 @@ class AsyncServerConnection(object):
"address": socket.address,
},
)
+ self.client_headers = {}
async def close(self):
await self.socket.close()
+ async def handle_headers(self, headers):
+ return {}
+
async def process_requests(self):
try:
self.logger.info("Client %r connected" % (self.socket.address,))
@@ -64,12 +68,20 @@ class AsyncServerConnection(object):
)
return
- # Read headers. Currently, no headers are implemented, so look for
- # an empty line to signal the end of the headers
+ # Read headers
+ self.client_headers = {}
while True:
header = await self.socket.recv()
if not header:
+ # Empty line. End of headers
break
+ tag, value = header.split(":", 1)
+ self.client_headers[tag.lower()] = value.strip()
+
+ if self.client_headers.get("needs-headers", "false") == "true":
+ for k, v in (await self.handle_headers(self.client_headers)).items():
+ await self.socket.send("%s: %s" % (k, v))
+ await self.socket.send("")
# Handle messages
while True: