[tor-commits] [pluggable-transports/snowflake] 17/31: Rejection reason feedback

gitolite role git at cupani.torproject.org
Thu Jun 16 17:04:04 UTC 2022


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 at 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 {

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the tor-commits mailing list