This is an automated email from the git hooks/post-receive script.
shelikhoo pushed a commit to branch main in repository pluggable-transports/snowflake.
commit 6e8fbe54eeebc0ffbf84d4dd82e3e9a87d7729c4 Author: Shelikhoo xiaokangwang@outlook.com AuthorDate: Fri Apr 29 17:12:59 2022 +0100
Rejection reason feedback --- broker/ipc.go | 10 ++++++++-- common/messages/proxy.go | 12 ++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/broker/ipc.go b/broker/ipc.go index 97f26ef..5a93585 100644 --- a/broker/ipc.go +++ b/broker/ipc.go @@ -72,7 +72,13 @@ func (i *IPC) ProxyPolls(arg messages.Arg, response *[]byte) error { }
if !i.ctx.CheckProxyRelayPattern(relayPattern, !relayPatternSupported) { - return fmt.Errorf("bad request: rejected relay pattern from proxy = %v", messages.ErrBadRequest) + log.Printf("bad request: rejected relay pattern from proxy = %v", messages.ErrBadRequest) + b, err := messages.EncodePollResponseWithRelayURL("", false, "", "", "incorrect relay pattern") + *response = b + if err != nil { + return messages.ErrInternal + } + return nil }
// Log geoip stats @@ -112,7 +118,7 @@ func (i *IPC) ProxyPolls(arg messages.Arg, response *[]byte) error { } else { relayURL = info.WebSocketAddress } - b, err = messages.EncodePollResponseWithRelayURL(string(offer.sdp), true, offer.natType, relayURL) + b, err = messages.EncodePollResponseWithRelayURL(string(offer.sdp), true, offer.natType, relayURL, "") if err != nil { return messages.ErrInternal } diff --git a/common/messages/proxy.go b/common/messages/proxy.go index 19cf6a3..6ea2c8a 100644 --- a/common/messages/proxy.go +++ b/common/messages/proxy.go @@ -181,10 +181,10 @@ type ProxyPollResponse struct { }
func EncodePollResponse(offer string, success bool, natType string) ([]byte, error) { - return EncodePollResponseWithRelayURL(offer, success, natType, "") + return EncodePollResponseWithRelayURL(offer, success, natType, "", "no match") }
-func EncodePollResponseWithRelayURL(offer string, success bool, natType, relayURL string) ([]byte, error) { +func EncodePollResponseWithRelayURL(offer string, success bool, natType, relayURL, failReason string) ([]byte, error) { if success { return json.Marshal(ProxyPollResponse{ Status: "client match", @@ -195,7 +195,7 @@ func EncodePollResponseWithRelayURL(offer string, success bool, natType, relayUR
} return json.Marshal(ProxyPollResponse{ - Status: "no match", + Status: failReason, }) } func DecodePollResponse(data []byte) (string, string, error) { @@ -219,12 +219,16 @@ func DecodePollResponseWithRelayURL(data []byte) (string, string, string, error) return "", "", "", fmt.Errorf("received invalid data") }
+ err = nil if message.Status == "client match" { if message.Offer == "" { return "", "", "", fmt.Errorf("no supplied offer") } } else { message.Offer = "" + if message.Status != "no match" { + err = errors.New(message.Status) + } }
natType := message.NAT @@ -232,7 +236,7 @@ func DecodePollResponseWithRelayURL(data []byte) (string, string, string, error) natType = "unknown" }
- return message.Offer, natType, message.RelayURL, nil + return message.Offer, natType, message.RelayURL, err }
type ProxyAnswerRequest struct {