Skip to content

Keep-alive connection handling, refactor state machine parser#10

Merged
szeka9 merged 7 commits into
mainfrom
development
Apr 18, 2026
Merged

Keep-alive connection handling, refactor state machine parser#10
szeka9 merged 7 commits into
mainfrom
development

Conversation

@szeka9
Copy link
Copy Markdown
Owner

@szeka9 szeka9 commented Apr 18, 2026

No description provided.

szeka9 added 7 commits April 18, 2026 15:20
- handle keep-alive headers according to HTTP/1.1 and HTTP/1.0,
persist connections if the protocol framing is valid

- wrap state machine transitions with a common public method (http.run()),
catching exceptions and terminating the state machine uniformly

- introduce abort() method for irregular parser termination where the
correctness of protocol framing cannot be ensured for subsequent requests;
use abort() to prevent the connection to be reused regardless
of keep-alive settings

- remove public methods specific to HTTP response codes, use
http.terminate() and http.abort() methods instead (expecting a status code
argument directly); terminate() and abort() are now usable by application
code to set status codes

- do not require response buffer argument for state machine transitions;
response buffers are written only through http.write_response_head() and
http.set_response_body() after the state machine has terminated

- raise runtime error when an invalid response handler is set instead
of terminating the state machine; this avoids terminating the state machine
multiple times leading to invalid/ambiguous response framing

- shorten/clarify the names of parser exceptions

- update content-length validation to allow more data to be present
in the request buffer compared to the indicated content-length; consider
excess data as subsequent request if keep-alive is enabled and HTTP framing
is valid

- add missing close() for byte streams (FileIO, BytesIO)
Each test uses a new socket connection, disable persistent
connections.
@szeka9 szeka9 merged commit 7d1ae45 into main Apr 18, 2026
1 check passed
@szeka9 szeka9 deleted the development branch April 18, 2026 17:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant