|
|
@@ -11,12 +11,18 @@ import (
|
|
|
v2tls "v2ray.com/core/transport/internet/tls"
|
|
|
)
|
|
|
|
|
|
+func getTCPSettingsFromContext(ctx context.Context) *Config {
|
|
|
+ rawTCPSettings := internet.TransportSettingsFromContext(ctx)
|
|
|
+ if rawTCPSettings == nil {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return rawTCPSettings.(*Config)
|
|
|
+}
|
|
|
+
|
|
|
func Dial(ctx context.Context, dest v2net.Destination) (internet.Connection, error) {
|
|
|
log.Trace(newError("dailing TCP to ", dest))
|
|
|
src := internet.DialerSourceFromContext(ctx)
|
|
|
|
|
|
- tcpSettings := internet.TransportSettingsFromContext(ctx).(*Config)
|
|
|
-
|
|
|
conn, err := internet.DialSystem(ctx, src, dest)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
@@ -31,7 +37,9 @@ func Dial(ctx context.Context, dest v2net.Destination) (internet.Connection, err
|
|
|
conn = tls.Client(conn, config)
|
|
|
}
|
|
|
}
|
|
|
- if tcpSettings.HeaderSettings != nil {
|
|
|
+
|
|
|
+ tcpSettings := getTCPSettingsFromContext(ctx)
|
|
|
+ if tcpSettings != nil && tcpSettings.HeaderSettings != nil {
|
|
|
headerConfig, err := tcpSettings.HeaderSettings.GetInstance()
|
|
|
if err != nil {
|
|
|
return nil, newError("failed to get header settings").Base(err).AtError()
|