fix: decode hypr socket response after joining all chunks - #142
Open
8192KB wants to merge 1 commit into
Open
Conversation
|
toggle function of cli will be deprecated soon in favor of active lua version the function of it in dots |
Collaborator
We still use the Hypr service in other parts of the cli however |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
My SUPER+M / SUPER+D toggle shortcuts stopped working intermittently, so I looked into the cause.
It turns out message() in hypr.py decodes each 8192-byte chunk from the socket as soon as it arrives, rather than waiting for the full response. Once the response exceeds 8192 bytes (which happens with enough windows open), the chunk boundary can fall in the middle of a multi-byte character in a window title (Korean, in my case), causing .decode() to raise an error before the command runs. I am not entirely certain why that specific boundary triggers it, but this matches what I observed.
The fix collects all chunks first and decodes once at the end, rather than decoding chunk by chunk.
I tested this by opening several windows and repeatedly triggering the toggle shortcut. It worked consistently after the fix, and I did not encounter any other issues.