diff options
Diffstat (limited to 'bitbake/lib/bb/asyncrpc/serv.py')
-rw-r--r-- | bitbake/lib/bb/asyncrpc/serv.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/bitbake/lib/bb/asyncrpc/serv.py b/bitbake/lib/bb/asyncrpc/serv.py index f0be9a6cdb..a66117acad 100644 --- a/bitbake/lib/bb/asyncrpc/serv.py +++ b/bitbake/lib/bb/asyncrpc/serv.py | |||
@@ -39,10 +39,14 @@ class AsyncServerConnection(object): | |||
39 | "address": socket.address, | 39 | "address": socket.address, |
40 | }, | 40 | }, |
41 | ) | 41 | ) |
42 | self.client_headers = {} | ||
42 | 43 | ||
43 | async def close(self): | 44 | async def close(self): |
44 | await self.socket.close() | 45 | await self.socket.close() |
45 | 46 | ||
47 | async def handle_headers(self, headers): | ||
48 | return {} | ||
49 | |||
46 | async def process_requests(self): | 50 | async def process_requests(self): |
47 | try: | 51 | try: |
48 | self.logger.info("Client %r connected" % (self.socket.address,)) | 52 | self.logger.info("Client %r connected" % (self.socket.address,)) |
@@ -64,12 +68,20 @@ class AsyncServerConnection(object): | |||
64 | ) | 68 | ) |
65 | return | 69 | return |
66 | 70 | ||
67 | # Read headers. Currently, no headers are implemented, so look for | 71 | # Read headers |
68 | # an empty line to signal the end of the headers | 72 | self.client_headers = {} |
69 | while True: | 73 | while True: |
70 | header = await self.socket.recv() | 74 | header = await self.socket.recv() |
71 | if not header: | 75 | if not header: |
76 | # Empty line. End of headers | ||
72 | break | 77 | break |
78 | tag, value = header.split(":", 1) | ||
79 | self.client_headers[tag.lower()] = value.strip() | ||
80 | |||
81 | if self.client_headers.get("needs-headers", "false") == "true": | ||
82 | for k, v in (await self.handle_headers(self.client_headers)).items(): | ||
83 | await self.socket.send("%s: %s" % (k, v)) | ||
84 | await self.socket.send("") | ||
73 | 85 | ||
74 | # Handle messages | 86 | # Handle messages |
75 | while True: | 87 | while True: |