diff options
| -rw-r--r-- | pkg/backend/api.go | 1 | ||||
| -rw-r--r-- | pkg/backend/init.go | 5 | ||||
| -rw-r--r-- | pkg/bitmask/init.go | 17 | 
3 files changed, 23 insertions, 0 deletions
| diff --git a/pkg/backend/api.go b/pkg/backend/api.go index 6d5ceee..52c23c3 100644 --- a/pkg/backend/api.go +++ b/pkg/backend/api.go @@ -148,6 +148,7 @@ type InitOpts struct {  	ProviderOptions  *bitmask.ProviderOpts  	SkipLaunch       bool  	Obfs4            bool +	UDP              bool  	DisableAutostart bool  	StartVPN         string  } diff --git a/pkg/backend/init.go b/pkg/backend/init.go index c6d713b..fae5ff1 100644 --- a/pkg/backend/init.go +++ b/pkg/backend/init.go @@ -58,6 +58,7 @@ func initializeBitmask(errCh chan string, opts *InitOpts) {  	bitmask.InitializeLogger()  	ctx.cfg = config.ParseConfig()  	setConfigOpts(opts, ctx.cfg) +	ctx.UseUDP = ctx.cfg.UDP  	err := pid.AcquirePID()  	if err != nil { @@ -92,6 +93,7 @@ func initializeBitmask(errCh chan string, opts *InitOpts) {  	ctx.IsReady = true  } +// transfer initialization options from the config json to the config object  func setConfigOpts(opts *InitOpts, conf *config.Config) {  	conf.SkipLaunch = opts.SkipLaunch  	if opts.StartVPN != "" { @@ -104,6 +106,9 @@ func setConfigOpts(opts *InitOpts, conf *config.Config) {  	if opts.Obfs4 {  		conf.Obfs4 = opts.Obfs4  	} +	if opts.UDP { +		conf.UDP = opts.UDP +	}  	if opts.DisableAutostart {  		conf.DisableAutostart = opts.DisableAutostart  	} diff --git a/pkg/bitmask/init.go b/pkg/bitmask/init.go index bc7d47d..a03a64b 100644 --- a/pkg/bitmask/init.go +++ b/pkg/bitmask/init.go @@ -95,6 +95,11 @@ func InitializeBitmask(conf *config.Config) (Bitmask, error) {  		return nil, err  	} +	err = setUDP(b, conf) +	if err != nil { +		return nil, err +	} +  	if !conf.SkipLaunch {  		err := maybeStartVPN(b, conf)  		if err != nil { @@ -119,6 +124,18 @@ func setTransport(b Bitmask, conf *config.Config) error {  	return nil  } +func setUDP(b Bitmask, conf *config.Config) error { +	if conf.UDP { +		log.Printf("Use UDP") +		err := b.UseUDP(true) +		if err != nil { +			log.Printf("Error setting UDP: %v", err) +			return err +		} +	} +	return nil +} +  func maybeStartVPN(b Bitmask, conf *config.Config) error {  	if !conf.StartVPN {  		return nil | 
