mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 11:11:30 -04:00
fix(broker): empty pattern if bridge-list is empty
i.e. if no bridge list file is provided, the relay pattern would not get set. AFAIK this is not a breaking change because the broker can't be used as a library, unlike client and server.
This commit is contained in:
parent
f752d2ab0c
commit
71828580bb
3 changed files with 21 additions and 17 deletions
|
@ -53,7 +53,11 @@ func (ctx *BrokerContext) GetBridgeInfo(fingerprint bridgefingerprint.Fingerprin
|
|||
return ctx.bridgeList.GetBridgeInfo(fingerprint)
|
||||
}
|
||||
|
||||
func NewBrokerContext(metricsLogger *log.Logger) *BrokerContext {
|
||||
func NewBrokerContext(
|
||||
metricsLogger *log.Logger,
|
||||
allowedRelayPattern,
|
||||
presumedPatternForLegacyClient string,
|
||||
) *BrokerContext {
|
||||
snowflakes := new(SnowflakeHeap)
|
||||
heap.Init(snowflakes)
|
||||
rSnowflakes := new(SnowflakeHeap)
|
||||
|
@ -75,12 +79,14 @@ func NewBrokerContext(metricsLogger *log.Logger) *BrokerContext {
|
|||
bridgeListHolder.LoadBridgeInfo(bytes.NewReader([]byte(DefaultBridges)))
|
||||
|
||||
return &BrokerContext{
|
||||
snowflakes: snowflakes,
|
||||
restrictedSnowflakes: rSnowflakes,
|
||||
idToSnowflake: make(map[string]*Snowflake),
|
||||
proxyPolls: make(chan *ProxyPoll),
|
||||
metrics: metrics,
|
||||
bridgeList: bridgeListHolder,
|
||||
snowflakes: snowflakes,
|
||||
restrictedSnowflakes: rSnowflakes,
|
||||
idToSnowflake: make(map[string]*Snowflake),
|
||||
proxyPolls: make(chan *ProxyPoll),
|
||||
metrics: metrics,
|
||||
bridgeList: bridgeListHolder,
|
||||
allowedRelayPattern: allowedRelayPattern,
|
||||
presumedPatternForLegacyClient: presumedPatternForLegacyClient,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -161,12 +167,10 @@ func (ctx *BrokerContext) AddSnowflake(id string, proxyType string, natType stri
|
|||
return snowflake
|
||||
}
|
||||
|
||||
func (ctx *BrokerContext) InstallBridgeListProfile(reader io.Reader, relayPattern, presumedPatternForLegacyClient string) error {
|
||||
func (ctx *BrokerContext) InstallBridgeListProfile(reader io.Reader) error {
|
||||
if err := ctx.bridgeList.LoadBridgeInfo(reader); err != nil {
|
||||
return err
|
||||
}
|
||||
ctx.allowedRelayPattern = relayPattern
|
||||
ctx.presumedPatternForLegacyClient = presumedPatternForLegacyClient
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -244,14 +248,14 @@ func main() {
|
|||
|
||||
metricsLogger := log.New(metricsFile, "", 0)
|
||||
|
||||
ctx := NewBrokerContext(metricsLogger)
|
||||
ctx := NewBrokerContext(metricsLogger, allowedRelayPattern, presumedPatternForLegacyClient)
|
||||
|
||||
if bridgeListFilePath != "" {
|
||||
bridgeListFile, err := os.Open(bridgeListFilePath)
|
||||
if err != nil {
|
||||
log.Fatal(err.Error())
|
||||
}
|
||||
err = ctx.InstallBridgeListProfile(bridgeListFile, allowedRelayPattern, presumedPatternForLegacyClient)
|
||||
err = ctx.InstallBridgeListProfile(bridgeListFile)
|
||||
if err != nil {
|
||||
log.Fatal(err.Error())
|
||||
}
|
||||
|
|
|
@ -89,7 +89,7 @@ func TestBroker(t *testing.T) {
|
|||
|
||||
Convey("Context", t, func() {
|
||||
buf := new(bytes.Buffer)
|
||||
ctx := NewBrokerContext(log.New(buf, "", 0))
|
||||
ctx := NewBrokerContext(log.New(buf, "", 0), "", "")
|
||||
i := &IPC{ctx}
|
||||
|
||||
Convey("Adds Snowflake", func() {
|
||||
|
@ -503,7 +503,7 @@ client-sqs-ips
|
|||
})
|
||||
|
||||
Convey("End-To-End", t, func() {
|
||||
ctx := NewBrokerContext(NullLogger())
|
||||
ctx := NewBrokerContext(NullLogger(), "", "")
|
||||
i := &IPC{ctx}
|
||||
|
||||
Convey("Check for client/proxy data race", func() {
|
||||
|
@ -656,7 +656,7 @@ func TestSnowflakeHeap(t *testing.T) {
|
|||
func TestInvalidGeoipFile(t *testing.T) {
|
||||
Convey("Geoip", t, func() {
|
||||
// Make sure things behave properly if geoip file fails to load
|
||||
ctx := NewBrokerContext(NullLogger())
|
||||
ctx := NewBrokerContext(NullLogger(), "", "")
|
||||
if err := ctx.metrics.LoadGeoipDatabases("invalid_filename", "invalid_filename6"); err != nil {
|
||||
log.Printf("loading geo ip databases returned error: %v", err)
|
||||
}
|
||||
|
@ -670,7 +670,7 @@ func TestMetrics(t *testing.T) {
|
|||
Convey("Test metrics...", t, func() {
|
||||
done := make(chan bool)
|
||||
buf := new(bytes.Buffer)
|
||||
ctx := NewBrokerContext(log.New(buf, "", 0))
|
||||
ctx := NewBrokerContext(log.New(buf, "", 0), "", "")
|
||||
i := &IPC{ctx}
|
||||
|
||||
err := ctx.metrics.LoadGeoipDatabases("test_geoip", "test_geoip6")
|
||||
|
|
|
@ -22,7 +22,7 @@ func TestSQS(t *testing.T) {
|
|||
|
||||
Convey("Context", t, func() {
|
||||
buf := new(bytes.Buffer)
|
||||
ipcCtx := NewBrokerContext(log.New(buf, "", 0))
|
||||
ipcCtx := NewBrokerContext(log.New(buf, "", 0), "", "")
|
||||
i := &IPC{ipcCtx}
|
||||
|
||||
var logBuffer bytes.Buffer
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue