mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-14 05:11:19 -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)
|
return ctx.bridgeList.GetBridgeInfo(fingerprint)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewBrokerContext(metricsLogger *log.Logger) *BrokerContext {
|
func NewBrokerContext(
|
||||||
|
metricsLogger *log.Logger,
|
||||||
|
allowedRelayPattern,
|
||||||
|
presumedPatternForLegacyClient string,
|
||||||
|
) *BrokerContext {
|
||||||
snowflakes := new(SnowflakeHeap)
|
snowflakes := new(SnowflakeHeap)
|
||||||
heap.Init(snowflakes)
|
heap.Init(snowflakes)
|
||||||
rSnowflakes := new(SnowflakeHeap)
|
rSnowflakes := new(SnowflakeHeap)
|
||||||
|
@ -81,6 +85,8 @@ func NewBrokerContext(metricsLogger *log.Logger) *BrokerContext {
|
||||||
proxyPolls: make(chan *ProxyPoll),
|
proxyPolls: make(chan *ProxyPoll),
|
||||||
metrics: metrics,
|
metrics: metrics,
|
||||||
bridgeList: bridgeListHolder,
|
bridgeList: bridgeListHolder,
|
||||||
|
allowedRelayPattern: allowedRelayPattern,
|
||||||
|
presumedPatternForLegacyClient: presumedPatternForLegacyClient,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,12 +167,10 @@ func (ctx *BrokerContext) AddSnowflake(id string, proxyType string, natType stri
|
||||||
return snowflake
|
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 {
|
if err := ctx.bridgeList.LoadBridgeInfo(reader); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
ctx.allowedRelayPattern = relayPattern
|
|
||||||
ctx.presumedPatternForLegacyClient = presumedPatternForLegacyClient
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -244,14 +248,14 @@ func main() {
|
||||||
|
|
||||||
metricsLogger := log.New(metricsFile, "", 0)
|
metricsLogger := log.New(metricsFile, "", 0)
|
||||||
|
|
||||||
ctx := NewBrokerContext(metricsLogger)
|
ctx := NewBrokerContext(metricsLogger, allowedRelayPattern, presumedPatternForLegacyClient)
|
||||||
|
|
||||||
if bridgeListFilePath != "" {
|
if bridgeListFilePath != "" {
|
||||||
bridgeListFile, err := os.Open(bridgeListFilePath)
|
bridgeListFile, err := os.Open(bridgeListFilePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err.Error())
|
log.Fatal(err.Error())
|
||||||
}
|
}
|
||||||
err = ctx.InstallBridgeListProfile(bridgeListFile, allowedRelayPattern, presumedPatternForLegacyClient)
|
err = ctx.InstallBridgeListProfile(bridgeListFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err.Error())
|
log.Fatal(err.Error())
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,7 +89,7 @@ func TestBroker(t *testing.T) {
|
||||||
|
|
||||||
Convey("Context", t, func() {
|
Convey("Context", t, func() {
|
||||||
buf := new(bytes.Buffer)
|
buf := new(bytes.Buffer)
|
||||||
ctx := NewBrokerContext(log.New(buf, "", 0))
|
ctx := NewBrokerContext(log.New(buf, "", 0), "", "")
|
||||||
i := &IPC{ctx}
|
i := &IPC{ctx}
|
||||||
|
|
||||||
Convey("Adds Snowflake", func() {
|
Convey("Adds Snowflake", func() {
|
||||||
|
@ -503,7 +503,7 @@ client-sqs-ips
|
||||||
})
|
})
|
||||||
|
|
||||||
Convey("End-To-End", t, func() {
|
Convey("End-To-End", t, func() {
|
||||||
ctx := NewBrokerContext(NullLogger())
|
ctx := NewBrokerContext(NullLogger(), "", "")
|
||||||
i := &IPC{ctx}
|
i := &IPC{ctx}
|
||||||
|
|
||||||
Convey("Check for client/proxy data race", func() {
|
Convey("Check for client/proxy data race", func() {
|
||||||
|
@ -656,7 +656,7 @@ func TestSnowflakeHeap(t *testing.T) {
|
||||||
func TestInvalidGeoipFile(t *testing.T) {
|
func TestInvalidGeoipFile(t *testing.T) {
|
||||||
Convey("Geoip", t, func() {
|
Convey("Geoip", t, func() {
|
||||||
// Make sure things behave properly if geoip file fails to load
|
// 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 {
|
if err := ctx.metrics.LoadGeoipDatabases("invalid_filename", "invalid_filename6"); err != nil {
|
||||||
log.Printf("loading geo ip databases returned error: %v", err)
|
log.Printf("loading geo ip databases returned error: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -670,7 +670,7 @@ func TestMetrics(t *testing.T) {
|
||||||
Convey("Test metrics...", t, func() {
|
Convey("Test metrics...", t, func() {
|
||||||
done := make(chan bool)
|
done := make(chan bool)
|
||||||
buf := new(bytes.Buffer)
|
buf := new(bytes.Buffer)
|
||||||
ctx := NewBrokerContext(log.New(buf, "", 0))
|
ctx := NewBrokerContext(log.New(buf, "", 0), "", "")
|
||||||
i := &IPC{ctx}
|
i := &IPC{ctx}
|
||||||
|
|
||||||
err := ctx.metrics.LoadGeoipDatabases("test_geoip", "test_geoip6")
|
err := ctx.metrics.LoadGeoipDatabases("test_geoip", "test_geoip6")
|
||||||
|
|
|
@ -22,7 +22,7 @@ func TestSQS(t *testing.T) {
|
||||||
|
|
||||||
Convey("Context", t, func() {
|
Convey("Context", t, func() {
|
||||||
buf := new(bytes.Buffer)
|
buf := new(bytes.Buffer)
|
||||||
ipcCtx := NewBrokerContext(log.New(buf, "", 0))
|
ipcCtx := NewBrokerContext(log.New(buf, "", 0), "", "")
|
||||||
i := &IPC{ipcCtx}
|
i := &IPC{ipcCtx}
|
||||||
|
|
||||||
var logBuffer bytes.Buffer
|
var logBuffer bytes.Buffer
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue