Represent Bridge Fingerprint As String

This commit is contained in:
Shelikhoo 2022-05-17 15:53:15 +01:00
parent dd61e2be0f
commit f789dce6d2
No known key found for this signature in database
GPG key ID: C4D5E79D22B25316
7 changed files with 69 additions and 21 deletions

View file

@ -4,6 +4,7 @@ import (
"container/heap"
"encoding/hex"
"fmt"
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/bridgefingerprint"
"log"
"net"
"time"
@ -130,7 +131,11 @@ func (i *IPC) ProxyPolls(arg messages.Arg, response *[]byte) error {
i.ctx.metrics.promMetrics.ProxyPollTotal.With(prometheus.Labels{"nat": natType, "status": "matched"}).Inc()
var relayURL string
if info, err := i.ctx.bridgeList.GetBridgeInfo(offer.fingerprint); err != nil {
bridgeFingerprint, err := bridgefingerprint.FingerprintFromBytes(offer.fingerprint)
if err != nil {
return messages.ErrBadRequest
}
if info, err := i.ctx.bridgeList.GetBridgeInfo(bridgeFingerprint); err != nil {
return err
} else {
relayURL = info.WebSocketAddress
@ -172,12 +177,18 @@ func (i *IPC) ClientOffers(arg messages.Arg, response *[]byte) error {
if err != nil {
return sendClientResponse(&messages.ClientPollResponse{Error: err.Error()}, response)
}
copy(offer.fingerprint[:], fingerprint)
if _, err := i.ctx.GetBridgeInfo(offer.fingerprint); err != nil {
BridgeFingerprint, err := bridgefingerprint.FingerprintFromBytes(fingerprint)
if err != nil {
return sendClientResponse(&messages.ClientPollResponse{Error: err.Error()}, response)
}
if _, err := i.ctx.GetBridgeInfo(BridgeFingerprint); err != nil {
return err
}
offer.fingerprint = BridgeFingerprint.ToBytes()
// Only hand out known restricted snowflakes to unrestricted clients
var snowflakeHeap *SnowflakeHeap
if offer.natType == NATUnrestricted {