|  | @@ -6,16 +6,16 @@ import (
 | 
											
												
													
														|  |  	"context"
 |  |  	"context"
 | 
											
												
													
														|  |  	"time"
 |  |  	"time"
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	"v2ray.com/core/common/session"
 |  | 
 | 
											
												
													
														|  | -	"v2ray.com/core/common/task"
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |  	"v2ray.com/core"
 |  |  	"v2ray.com/core"
 | 
											
												
													
														|  |  	"v2ray.com/core/common"
 |  |  	"v2ray.com/core/common"
 | 
											
												
													
														|  |  	"v2ray.com/core/common/buf"
 |  |  	"v2ray.com/core/common/buf"
 | 
											
												
													
														|  |  	"v2ray.com/core/common/net"
 |  |  	"v2ray.com/core/common/net"
 | 
											
												
													
														|  | 
 |  | +	"v2ray.com/core/common/platform"
 | 
											
												
													
														|  |  	"v2ray.com/core/common/protocol"
 |  |  	"v2ray.com/core/common/protocol"
 | 
											
												
													
														|  |  	"v2ray.com/core/common/retry"
 |  |  	"v2ray.com/core/common/retry"
 | 
											
												
													
														|  | 
 |  | +	"v2ray.com/core/common/session"
 | 
											
												
													
														|  |  	"v2ray.com/core/common/signal"
 |  |  	"v2ray.com/core/common/signal"
 | 
											
												
													
														|  | 
 |  | +	"v2ray.com/core/common/task"
 | 
											
												
													
														|  |  	"v2ray.com/core/proxy"
 |  |  	"v2ray.com/core/proxy"
 | 
											
												
													
														|  |  	"v2ray.com/core/proxy/vmess"
 |  |  	"v2ray.com/core/proxy/vmess"
 | 
											
												
													
														|  |  	"v2ray.com/core/proxy/vmess/encoding"
 |  |  	"v2ray.com/core/proxy/vmess/encoding"
 | 
											
										
											
												
													
														|  | @@ -87,6 +87,10 @@ func (v *Handler) Process(ctx context.Context, link *core.Link, dialer proxy.Dia
 | 
											
												
													
														|  |  		Option:  protocol.RequestOptionChunkStream,
 |  |  		Option:  protocol.RequestOptionChunkStream,
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +	if enablePadding {
 | 
											
												
													
														|  | 
 |  | +		request.Option.Set(protocol.RequestOptionGlobalPadding)
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  	rawAccount, err := request.User.GetTypedAccount()
 |  |  	rawAccount, err := request.User.GetTypedAccount()
 | 
											
												
													
														|  |  	if err != nil {
 |  |  	if err != nil {
 | 
											
												
													
														|  |  		return newError("failed to get user account").Base(err).AtWarning()
 |  |  		return newError("failed to get user account").Base(err).AtWarning()
 | 
											
										
											
												
													
														|  | @@ -161,8 +165,18 @@ func (v *Handler) Process(ctx context.Context, link *core.Link, dialer proxy.Dia
 | 
											
												
													
														|  |  	return nil
 |  |  	return nil
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +var (
 | 
											
												
													
														|  | 
 |  | +	enablePadding = false
 | 
											
												
													
														|  | 
 |  | +)
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  func init() {
 |  |  func init() {
 | 
											
												
													
														|  |  	common.Must(common.RegisterConfig((*Config)(nil), func(ctx context.Context, config interface{}) (interface{}, error) {
 |  |  	common.Must(common.RegisterConfig((*Config)(nil), func(ctx context.Context, config interface{}) (interface{}, error) {
 | 
											
												
													
														|  |  		return New(ctx, config.(*Config))
 |  |  		return New(ctx, config.(*Config))
 | 
											
												
													
														|  |  	}))
 |  |  	}))
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	const defaultFlagValue = "NOT_DEFINED_AT_ALL"
 | 
											
												
													
														|  | 
 |  | +	paddingValue := platform.NewEnvFlag("v2ray.vmess.padding").GetValue(func() string { return defaultFlagValue })
 | 
											
												
													
														|  | 
 |  | +	if paddingValue != defaultFlagValue {
 | 
											
												
													
														|  | 
 |  | +		enablePadding = true
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  |  }
 |  |  }
 |