mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-14 05:11:19 -04:00
Rejection reason feedback
This commit is contained in:
parent
3ebb5a4186
commit
6e8fbe54ee
2 changed files with 16 additions and 6 deletions
|
@ -72,7 +72,13 @@ func (i *IPC) ProxyPolls(arg messages.Arg, response *[]byte) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if !i.ctx.CheckProxyRelayPattern(relayPattern, !relayPatternSupported) {
|
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
|
// Log geoip stats
|
||||||
|
@ -112,7 +118,7 @@ func (i *IPC) ProxyPolls(arg messages.Arg, response *[]byte) error {
|
||||||
} else {
|
} else {
|
||||||
relayURL = info.WebSocketAddress
|
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 {
|
if err != nil {
|
||||||
return messages.ErrInternal
|
return messages.ErrInternal
|
||||||
}
|
}
|
||||||
|
|
|
@ -181,10 +181,10 @@ type ProxyPollResponse struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func EncodePollResponse(offer string, success bool, natType string) ([]byte, error) {
|
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 {
|
if success {
|
||||||
return json.Marshal(ProxyPollResponse{
|
return json.Marshal(ProxyPollResponse{
|
||||||
Status: "client match",
|
Status: "client match",
|
||||||
|
@ -195,7 +195,7 @@ func EncodePollResponseWithRelayURL(offer string, success bool, natType, relayUR
|
||||||
|
|
||||||
}
|
}
|
||||||
return json.Marshal(ProxyPollResponse{
|
return json.Marshal(ProxyPollResponse{
|
||||||
Status: "no match",
|
Status: failReason,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
func DecodePollResponse(data []byte) (string, string, error) {
|
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")
|
return "", "", "", fmt.Errorf("received invalid data")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = nil
|
||||||
if message.Status == "client match" {
|
if message.Status == "client match" {
|
||||||
if message.Offer == "" {
|
if message.Offer == "" {
|
||||||
return "", "", "", fmt.Errorf("no supplied offer")
|
return "", "", "", fmt.Errorf("no supplied offer")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
message.Offer = ""
|
message.Offer = ""
|
||||||
|
if message.Status != "no match" {
|
||||||
|
err = errors.New(message.Status)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
natType := message.NAT
|
natType := message.NAT
|
||||||
|
@ -232,7 +236,7 @@ func DecodePollResponseWithRelayURL(data []byte) (string, string, string, error)
|
||||||
natType = "unknown"
|
natType = "unknown"
|
||||||
}
|
}
|
||||||
|
|
||||||
return message.Offer, natType, message.RelayURL, nil
|
return message.Offer, natType, message.RelayURL, err
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProxyAnswerRequest struct {
|
type ProxyAnswerRequest struct {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue