Add the option to preload stdnse.make_buffer with data#3253
Closed
nnposter wants to merge 1 commit intonmap:masterfrom
Closed
Add the option to preload stdnse.make_buffer with data#3253nnposter wants to merge 1 commit intonmap:masterfrom
nnposter wants to merge 1 commit intonmap:masterfrom
Conversation
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.
Function
stdnse.make_bufferprovides a very convenient method for reading from a socket in predictable chunks separated by a given pattern, such as one line at a time. This works well when the socket is connected with<socket>:connectbut the benefit tends to get substantially reduced when some of the data is incidentally already received from the socket beforestdnse.make_bufferhas a chance to be called. One such example is when a socket is connected withcomm.tryssl, which returns not just the connected socket but also data read by initial<socket>:receive. A user is then left with extracting the chunks from this initial data and gluing them together with subsequent reads from the buffer created withstdnse.make_buffer. The code would generally look something like this:This patch is implementing a third parameter for
stdnse.make_buffer, allowing this initial, incidentally read data to be returned to the buffer and making it available for subsequent reads. The code then gets substantially simpler:This PR will be merged in after February 1 unless concerns are raised.