Fix ECH retry support

This commit is contained in:
世界
2025-10-07 13:19:57 +08:00
parent 1f03080540
commit fecdbf20de

View File

@@ -89,20 +89,18 @@ func (d *defaultDialer) dialContext(ctx context.Context, destination M.Socksaddr
return nil, err
}
tlsConn, err := aTLS.ClientHandshake(ctx, conn, d.config)
if err == nil {
return tlsConn, nil
}
conn.Close()
if echRetry {
if err != nil {
conn.Close()
var echErr *tls.ECHRejectionError
if errors.As(err, &echErr) && len(echErr.RetryConfigList) > 0 {
if echRetry && errors.As(err, &echErr) && len(echErr.RetryConfigList) > 0 {
if echConfig, isECH := d.config.(ECHCapableConfig); isECH {
echConfig.SetECHConfigList(echErr.RetryConfigList)
return d.dialContext(ctx, destination, false)
}
}
return d.dialContext(ctx, destination, false)
return nil, err
}
return nil, err
return tlsConn, nil
}
func (d *defaultDialer) Upstream() any {