Repository navigation
feat(sip): add transport write filter - #381
Open
Michsantozz wants to merge 1 commit into
Open
Michsantozz wants to merge 1 commit into
Michsantozz wants to merge 1 commit into
Conversation
Mirror of WithTransportLayerReadFilter for the write side: the filter is called with every serialized message right before UDP, TCP, TLS, WS or WSS connections write it, and can inspect, replace or drop it. Together with the read filter it allows tracing SIP in both directions without SIPDebug and the global logger. Co-Authored-By: Claude <noreply@anthropic.com>
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.
What
WithTransportLayerWriteFilter(f TransportWriteFilter), the write-side counterpart ofWithTransportLayerReadFilter.The filter is called with each serialized message right before a UDP, TCP, TLS, WS or WSS connection writes it,
with
TransportWriteProps{Transport, LocalAddr, RemoteAddr}, and can inspect, replace or drop it (an error drops themessage and is returned by
WriteMsg).Why
The read filter plus
OnMessagelet an application see what arrives, but nothing exposes what is sent: transactionsand dialogs call
Connection.WriteMsgdirectly, so the only option today isSIPDebugand the global logger. Withboth filters an application can keep a per-call SIP trace (both directions, after TLS) without touching every call site.
Notes
readFilter: transport layer -> transports -> connections, set when a connection is created.datais the pooled buffer: the doc comment says not to retain it.net.Pipe, and an error dropping the message.go test ./...passes.