Pull Request: Improved Handshake Handling #40
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
I have made changes to how handshakes are handled to address issues encountered during high traffic on the server. Previously, the server was too quick to reject handshakes from clients, causing problems.
Issue
During high traffic, I discovered that on some occasions, the GNUTLS library would return GNUTLS_E_AGAIN but errno would also be set to something other than EAGAIN, resulting in handshake failures.
Solution
To resolve this, I implemented a check to ensure we retry when GNUTLS indicates to do so. Additionally, I've added retries for the PUSH, PULL functions, and early termination failures due to high throughput on the server socket.
Changes Made
Implemented retry logic when GNUTLS_E_AGAIN is returned, regardless of errno.
Added retry mechanisms for PUSH, PULL functions, and early termination scenarios.
Impact
These changes should improve the reliability of handshake processing, particularly under high server load.
This version maintains the original intent while improving clarity and structure.