Parse uWSGI packet header and vars block.
(self, unreader)
| 87 | self.must_close = True |
| 88 | |
| 89 | def parse(self, unreader): |
| 90 | """Parse uWSGI packet header and vars block.""" |
| 91 | # Read the 4-byte header |
| 92 | header = self._read_exact(unreader, 4) |
| 93 | if len(header) < 4: |
| 94 | raise InvalidUWSGIHeader("incomplete header") |
| 95 | |
| 96 | self.modifier1 = header[0] |
| 97 | datasize = int.from_bytes(header[1:3], 'little') |
| 98 | self.modifier2 = header[3] |
| 99 | |
| 100 | # Only modifier1=0 (WSGI request) is supported |
| 101 | if self.modifier1 != 0: |
| 102 | raise UnsupportedModifier(self.modifier1) |
| 103 | |
| 104 | # Read the vars block |
| 105 | if datasize > 0: |
| 106 | vars_data = self._read_exact(unreader, datasize) |
| 107 | if len(vars_data) < datasize: |
| 108 | raise InvalidUWSGIHeader("incomplete vars block") |
| 109 | self._parse_vars(vars_data) |
| 110 | |
| 111 | # Extract HTTP request info from vars |
| 112 | self._extract_request_info() |
| 113 | |
| 114 | return b"" |
| 115 | |
| 116 | def _read_exact(self, unreader, size): |
| 117 | """Read exactly size bytes from the unreader.""" |
no test coverage detected