Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package v2ray-core for openSUSE:Factory 
checked in at 2021-11-11 21:38:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/v2ray-core (Old)
 and      /work/SRC/openSUSE:Factory/.v2ray-core.new.1890 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "v2ray-core"

Thu Nov 11 21:38:04 2021 rev:16 rq:930774 version:4.43.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/v2ray-core/v2ray-core.changes    2021-09-22 
22:13:09.464333030 +0200
+++ /work/SRC/openSUSE:Factory/.v2ray-core.new.1890/v2ray-core.changes  
2021-11-11 21:39:09.933008708 +0100
@@ -1,0 +2,13 @@
+Thu Nov 11 02:55:40 UTC 2021 - opensuse-packaging 
<[email protected]>
+
+- Update version to 4.43.0
+  * Send Shadowsocks handshake with payload data if available
+  * Custom TCP Fast Open queue length support
+  * Fix Trojan fallback cannot get ALPN
+  * Fix QueryStrategy ignored
+  * Fix UDP connection transport connection terminated unnecessarily
+  * refactor: move from io/ioutil to io and os package
+  * Fix some tests to use udp.PickPort() 
+  * Fix flaky TestVMessDynamicPort
+
+-------------------------------------------------------------------

Old:
----
  v2ray-core-4.42.2.tar.gz

New:
----
  v2ray-core-4.43.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ v2ray-core.spec ++++++
--- /var/tmp/diff_new_pack.FfGjgU/_old  2021-11-11 21:39:13.897011599 +0100
+++ /var/tmp/diff_new_pack.FfGjgU/_new  2021-11-11 21:39:13.901011602 +0100
@@ -25,7 +25,7 @@
 %define   import_path     github.com/v2fly/v2ray-core/v4
 
 Name:           v2ray-core
-Version:        4.42.2
+Version:        4.43.0
 Release:        0
 Summary:        Network tools for building a computer network
 License:        MIT
@@ -43,8 +43,8 @@
 BuildRequires:  golang-packaging
 BuildRequires:  systemd-rpm-macros
 # This package (v4.37.3+) can not be built with go version < 1.16
-BuildRequires:  golang(API) = 1.16
 BuildRequires:  unzip
+BuildRequires:  golang(API) = 1.16
 BuildRequires:  pkgconfig(systemd)
 AutoReqProv:    Off
 Provides:       v2ray = %{version}-%{release}



++++++ v2ray-core-4.42.2.tar.gz -> v2ray-core-4.43.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/.github/workflows/deb.yml 
new/v2ray-core-4.43.0/.github/workflows/deb.yml
--- old/v2ray-core-4.42.2/.github/workflows/deb.yml     2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/.github/workflows/deb.yml     2021-10-02 
18:07:52.000000000 +0200
@@ -21,18 +21,16 @@
   package:
     if: github.repository == 'v2fly/v2ray-core'
     runs-on: ubuntu-latest
-    container: debian:sid
+    container: golang:1.17-bullseye
 
     steps:
-      - name: Install git
+      - name: Update & install dependencies
         run: |
           apt-get update
           apt-get install -y git wget
 
       - name: Checkout codebase
         uses: actions/checkout@v2
-        with:
-          submodules: "recursive"
 
       - name: Download geo files
         run: |
@@ -42,11 +40,7 @@
 
       - name: Install build dependencies
         run: |
-          apt-get install -y build-essential dh-golang golang-1.17 reprepro
-
-      - name: Set environment variable
-        run: |
-          echo "PATH=/usr/lib/go-1.17/bin:${PATH}" >> $GITHUB_ENV
+          apt-get install -y build-essential dh-golang reprepro
 
       - name: Build
         run: |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/.github/workflows/release.yml 
new/v2ray-core-4.43.0/.github/workflows/release.yml
--- old/v2ray-core-4.42.2/.github/workflows/release.yml 2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/.github/workflows/release.yml 2021-10-02 
18:07:52.000000000 +0200
@@ -100,7 +100,7 @@
       - name: Set up Go
         uses: actions/setup-go@v2
         with:
-          go-version: ^1.17.1
+          go-version: ^1.17
 
       - name: Get project dependencies
         run: go mod download
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/.github/workflows/test.yml 
new/v2ray-core-4.43.0/.github/workflows/test.yml
--- old/v2ray-core-4.42.2/.github/workflows/test.yml    2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/.github/workflows/test.yml    2021-10-02 
18:07:52.000000000 +0200
@@ -30,7 +30,7 @@
       - name: Set up Go 1.x
         uses: actions/setup-go@v2
         with:
-          go-version: ^1.17.1
+          go-version: ^1.17
 
       - name: Checkout codebase
         uses: actions/checkout@v2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/app/dns/dns.go 
new/v2ray-core-4.43.0/app/dns/dns.go
--- old/v2ray-core-4.42.2/app/dns/dns.go        2021-09-17 15:23:08.000000000 
+0200
+++ new/v2ray-core-4.43.0/app/dns/dns.go        2021-10-02 18:07:52.000000000 
+0200
@@ -172,29 +172,27 @@
 
 // LookupIP implements dns.Client.
 func (s *DNS) LookupIP(domain string) ([]net.IP, error) {
-       return s.lookupIPInternal(domain, dns.IPOption{
-               IPv4Enable: true,
-               IPv6Enable: true,
-               FakeEnable: s.ipOption.FakeEnable,
-       })
+       return s.lookupIPInternal(domain, *s.ipOption)
 }
 
 // LookupIPv4 implements dns.IPv4Lookup.
 func (s *DNS) LookupIPv4(domain string) ([]net.IP, error) {
-       return s.lookupIPInternal(domain, dns.IPOption{
-               IPv4Enable: true,
-               IPv6Enable: false,
-               FakeEnable: s.ipOption.FakeEnable,
-       })
+       if !s.ipOption.IPv4Enable {
+               return nil, dns.ErrEmptyResponse
+       }
+       o := *s.ipOption
+       o.IPv6Enable = false
+       return s.lookupIPInternal(domain, o)
 }
 
 // LookupIPv6 implements dns.IPv6Lookup.
 func (s *DNS) LookupIPv6(domain string) ([]net.IP, error) {
-       return s.lookupIPInternal(domain, dns.IPOption{
-               IPv4Enable: false,
-               IPv6Enable: true,
-               FakeEnable: s.ipOption.FakeEnable,
-       })
+       if !s.ipOption.IPv6Enable {
+               return nil, dns.ErrEmptyResponse
+       }
+       o := *s.ipOption
+       o.IPv4Enable = false
+       return s.lookupIPInternal(domain, o)
 }
 
 func (s *DNS) lookupIPInternal(domain string, option dns.IPOption) ([]net.IP, 
error) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/app/dns/nameserver_doh.go 
new/v2ray-core-4.43.0/app/dns/nameserver_doh.go
--- old/v2ray-core-4.42.2/app/dns/nameserver_doh.go     2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/app/dns/nameserver_doh.go     2021-10-02 
18:07:52.000000000 +0200
@@ -8,7 +8,6 @@
        "context"
        "fmt"
        "io"
-       "io/ioutil"
        "net/http"
        "net/url"
        "sync"
@@ -283,11 +282,11 @@
 
        defer resp.Body.Close()
        if resp.StatusCode != http.StatusOK {
-               io.Copy(ioutil.Discard, resp.Body) // flush resp.Body so that 
the conn is reusable
+               io.Copy(io.Discard, resp.Body) // flush resp.Body so that the 
conn is reusable
                return nil, fmt.Errorf("DOH server returned code %d", 
resp.StatusCode)
        }
 
-       return ioutil.ReadAll(resp.Body)
+       return io.ReadAll(resp.Body)
 }
 
 func (s *DoHNameServer) findIPsForDomain(domain string, option 
dns_feature.IPOption) ([]net.IP, error) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/app/proxyman/inbound/worker.go 
new/v2ray-core-4.43.0/app/proxyman/inbound/worker.go
--- old/v2ray-core-4.42.2/app/proxyman/inbound/worker.go        2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/app/proxyman/inbound/worker.go        2021-10-02 
18:07:52.000000000 +0200
@@ -153,6 +153,11 @@
        done             *done.Instance
        uplink           stats.Counter
        downlink         stats.Counter
+       inactive         bool
+}
+
+func (c *udpConn) setInactive() {
+       c.inactive = true
 }
 
 func (c *udpConn) updateActivity() {
@@ -315,7 +320,11 @@
                                newError("connection 
ends").Base(err).WriteToLog(session.ExportIDToError(ctx))
                        }
                        conn.Close()
-                       w.removeConn(id)
+                       // conn not removed by checker TODO may be lock worker 
here is better
+                       if !conn.inactive {
+                               conn.setInactive()
+                               w.removeConn(id)
+                       }
                }()
        }
 }
@@ -344,7 +353,10 @@
 
        for addr, conn := range w.activeConn {
                if nowSec-atomic.LoadInt64(&conn.lastActivityTime) > 8 { // 
TODO Timeout too small
-                       delete(w.activeConn, addr)
+                       if !conn.inactive {
+                               conn.setInactive()
+                               delete(w.activeConn, addr)
+                       }
                        conn.Close()
                }
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/common/buf/multi_buffer_test.go 
new/v2ray-core-4.43.0/common/buf/multi_buffer_test.go
--- old/v2ray-core-4.42.2/common/buf/multi_buffer_test.go       2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/common/buf/multi_buffer_test.go       2021-10-02 
18:07:52.000000000 +0200
@@ -4,7 +4,6 @@
        "bytes"
        "crypto/rand"
        "io"
-       "io/ioutil"
        "os"
        "testing"
 
@@ -120,7 +119,7 @@
                common.Must(err)
                f.Close()
 
-               cnt, err := ioutil.ReadFile(dat)
+               cnt, err := os.ReadFile(dat)
                common.Must(err)
 
                if d := cmp.Diff(buf2, cnt); d != "" {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/common/common.go 
new/v2ray-core-4.43.0/common/common.go
--- old/v2ray-core-4.42.2/common/common.go      2021-09-17 15:23:08.000000000 
+0200
+++ new/v2ray-core-4.43.0/common/common.go      2021-10-02 18:07:52.000000000 
+0200
@@ -5,7 +5,7 @@
 import (
        "fmt"
        "go/build"
-       "io/ioutil"
+       "io"
        "net/http"
        "net/url"
        "os"
@@ -70,7 +70,7 @@
        }
        var data []byte
        var runtimeEnv string
-       data, readErr := ioutil.ReadFile(file)
+       data, readErr := os.ReadFile(file)
        if readErr != nil {
                return "", readErr
        }
@@ -153,7 +153,7 @@
                return nil, newError("unexpected HTTP status code: ", 
resp.StatusCode)
        }
 
-       content, err := ioutil.ReadAll(resp.Body)
+       content, err := io.ReadAll(resp.Body)
        if err != nil {
                return nil, newError("failed to read HTTP response").Base(err)
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/common/drain/drainer.go 
new/v2ray-core-4.43.0/common/drain/drainer.go
--- old/v2ray-core-4.42.2/common/drain/drainer.go       2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/common/drain/drainer.go       2021-10-02 
18:07:52.000000000 +0200
@@ -2,7 +2,6 @@
 
 import (
        "io"
-       "io/ioutil"
 
        "github.com/v2fly/v2ray-core/v4/common/dice"
 )
@@ -36,7 +35,7 @@
 }
 
 func drainReadN(reader io.Reader, n int) error {
-       _, err := io.CopyN(ioutil.Discard, reader, int64(n))
+       _, err := io.CopyN(io.Discard, reader, int64(n))
        return err
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/common/log/logger_test.go 
new/v2ray-core-4.43.0/common/log/logger_test.go
--- old/v2ray-core-4.42.2/common/log/logger_test.go     2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/common/log/logger_test.go     2021-10-02 
18:07:52.000000000 +0200
@@ -1,7 +1,6 @@
 package log_test
 
 import (
-       "io/ioutil"
        "os"
        "strings"
        "testing"
@@ -13,7 +12,7 @@
 )
 
 func TestFileLogger(t *testing.T) {
-       f, err := ioutil.TempFile("", "vtest")
+       f, err := os.CreateTemp("", "vtest")
        common.Must(err)
        path := f.Name()
        common.Must(f.Close())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/core.go 
new/v2ray-core-4.43.0/core.go
--- old/v2ray-core-4.42.2/core.go       2021-09-17 15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/core.go       2021-10-02 18:07:52.000000000 +0200
@@ -18,7 +18,7 @@
 )
 
 var (
-       version  = "4.42.2"
+       version  = "4.43.0"
        build    = "Custom"
        codename = "V2Fly, a community-driven edition of V2Ray."
        intro    = "A unified platform for anti-censorship."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/go.mod new/v2ray-core-4.43.0/go.mod
--- old/v2ray-core-4.42.2/go.mod        2021-09-17 15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/go.mod        2021-10-02 18:07:52.000000000 +0200
@@ -21,7 +21,7 @@
        golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f
        golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
        golang.org/x/sys v0.0.0-20210903071746-97244b99971b
-       google.golang.org/grpc v1.40.0
+       google.golang.org/grpc v1.41.0
        google.golang.org/protobuf v1.27.1
        h12.io/socks v1.0.3
        inet.af/netaddr v0.0.0-20210903134321-85fa6c94624e
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/go.sum new/v2ray-core-4.43.0/go.sum
--- old/v2ray-core-4.42.2/go.sum        2021-09-17 15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/go.sum        2021-10-02 18:07:52.000000000 +0200
@@ -36,6 +36,7 @@
 github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod 
h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s=
 github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod 
h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
 github.com/cespare/xxhash v1.1.0/go.mod 
h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
+github.com/cespare/xxhash/v2 v2.1.1/go.mod 
h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
 github.com/cheekybits/genny v1.0.0 
h1:uGGa4nei+j20rOSeDeP5Of12XVm7TGUd4dJA9RDitfE=
 github.com/cheekybits/genny v1.0.0/go.mod 
h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ=
 github.com/chzyer/logex v1.1.10/go.mod 
h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
@@ -44,7 +45,7 @@
 github.com/client9/misspell v0.3.4/go.mod 
h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
 github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod 
h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
 github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod 
h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod 
h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod 
h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
 github.com/coreos/bbolt v1.3.2/go.mod 
h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
 github.com/coreos/etcd v3.3.13+incompatible/go.mod 
h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
 github.com/coreos/go-semver v0.3.0/go.mod 
h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
@@ -67,7 +68,7 @@
 github.com/envoyproxy/go-control-plane 
v0.9.1-0.20191026205805-5f8ba28d4473/go.mod 
h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
 github.com/envoyproxy/go-control-plane v0.9.4/go.mod 
h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
 github.com/envoyproxy/go-control-plane 
v0.9.9-0.20201210154907-fd9021fe5dad/go.mod 
h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
-github.com/envoyproxy/go-control-plane 
v0.9.9-0.20210512163311-63b5d3c536b0/go.mod 
h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=
+github.com/envoyproxy/go-control-plane 
v0.9.10-0.20210907150352-cf90f659a021/go.mod 
h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
 github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod 
h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
 github.com/fatih/color v1.7.0/go.mod 
h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
 github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod 
h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
@@ -556,8 +557,8 @@
 google.golang.org/grpc v1.27.0/go.mod 
h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
 google.golang.org/grpc v1.33.1/go.mod 
h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
 google.golang.org/grpc v1.36.0/go.mod 
h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q=
-google.golang.org/grpc v1.40.0/go.mod 
h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
+google.golang.org/grpc v1.41.0 h1:f+PlOh7QV4iIJkPrx5NQ7qaNGFQ3OTse67yaDHfju4E=
+google.golang.org/grpc v1.41.0/go.mod 
h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k=
 google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod 
h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
 google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod 
h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
 google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod 
h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/v2ray-core-4.42.2/infra/conf/geodata/memconservative/cache.go 
new/v2ray-core-4.43.0/infra/conf/geodata/memconservative/cache.go
--- old/v2ray-core-4.42.2/infra/conf/geodata/memconservative/cache.go   
2021-09-17 15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/infra/conf/geodata/memconservative/cache.go   
2021-10-02 18:07:52.000000000 +0200
@@ -1,7 +1,7 @@
 package memconservative
 
 import (
-       "io/ioutil"
+       "os"
        "strings"
 
        "google.golang.org/protobuf/proto"
@@ -53,7 +53,7 @@
        case errFailedToReadBytes, errFailedToReadExpectedLenBytes,
                errInvalidGeodataFile, errInvalidGeodataVarintLength:
                newError("failed to decode geoip file: ", filename, ", fallback 
to the original ReadFile method")
-               geoipBytes, err = ioutil.ReadFile(asset)
+               geoipBytes, err = os.ReadFile(asset)
                if err != nil {
                        return nil, err
                }
@@ -118,7 +118,7 @@
        case errFailedToReadBytes, errFailedToReadExpectedLenBytes,
                errInvalidGeodataFile, errInvalidGeodataVarintLength:
                newError("failed to decode geoip file: ", filename, ", fallback 
to the original ReadFile method")
-               geositeBytes, err = ioutil.ReadFile(asset)
+               geositeBytes, err = os.ReadFile(asset)
                if err != nil {
                        return nil, err
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/infra/conf/transport_internet.go 
new/v2ray-core-4.43.0/infra/conf/transport_internet.go
--- old/v2ray-core-4.42.2/infra/conf/transport_internet.go      2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/infra/conf/transport_internet.go      2021-10-02 
18:07:52.000000000 +0200
@@ -387,6 +387,7 @@
 type SocketConfig struct {
        Mark                 uint32 `json:"mark"`
        TFO                  *bool  `json:"tcpFastOpen"`
+       TFOQueueLength       uint32 `json:"tcpFastOpenQueueLength"`
        TProxy               string `json:"tproxy"`
        AcceptProxyProtocol  bool   `json:"acceptProxyProtocol"`
        TCPKeepAliveInterval int32  `json:"tcpKeepAliveInterval"`
@@ -402,6 +403,12 @@
                        tfoSettings = internet.SocketConfig_Disable
                }
        }
+
+       tfoQueueLength := c.TFOQueueLength
+       if tfoQueueLength == 0 {
+               tfoQueueLength = 4096
+       }
+
        var tproxy internet.SocketConfig_TProxyMode
        switch strings.ToLower(c.TProxy) {
        case "tproxy":
@@ -415,6 +422,7 @@
        return &internet.SocketConfig{
                Mark:                 c.Mark,
                Tfo:                  tfoSettings,
+               TfoQueueLength:       tfoQueueLength,
                Tproxy:               tproxy,
                AcceptProxyProtocol:  c.AcceptProxyProtocol,
                TcpKeepAliveInterval: c.TCPKeepAliveInterval,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/infra/conf/transport_test.go 
new/v2ray-core-4.43.0/infra/conf/transport_test.go
--- old/v2ray-core-4.42.2/infra/conf/transport_test.go  2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/infra/conf/transport_test.go  2021-10-02 
18:07:52.000000000 +0200
@@ -35,12 +35,14 @@
                {
                        Input: `{
                                "mark": 1,
-                               "tcpFastOpen": true
+                               "tcpFastOpen": true,
+                               "tcpFastOpenQueueLength": 1024
                        }`,
                        Parser: createParser(),
                        Output: &internet.SocketConfig{
-                               Mark: 1,
-                               Tfo:  internet.SocketConfig_Enable,
+                               Mark:           1,
+                               Tfo:            internet.SocketConfig_Enable,
+                               TfoQueueLength: 1024,
                        },
                },
        })
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/infra/control/certchainhash.go 
new/v2ray-core-4.43.0/infra/control/certchainhash.go
--- old/v2ray-core-4.42.2/infra/control/certchainhash.go        2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/infra/control/certchainhash.go        2021-10-02 
18:07:52.000000000 +0200
@@ -3,7 +3,7 @@
 import (
        "flag"
        "fmt"
-       "io/ioutil"
+       "os"
 
        v2tls "github.com/v2fly/v2ray-core/v4/transport/internet/tls"
 )
@@ -30,7 +30,7 @@
        if err := fs.Parse(args); err != nil {
                return err
        }
-       certContent, err := ioutil.ReadFile(*cert)
+       certContent, err := os.ReadFile(*cert)
        if err != nil {
                return err
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/infra/control/config.go 
new/v2ray-core-4.43.0/infra/control/config.go
--- old/v2ray-core-4.42.2/infra/control/config.go       2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/infra/control/config.go       2021-10-02 
18:07:52.000000000 +0200
@@ -3,7 +3,6 @@
 import (
        "bytes"
        "io"
-       "io/ioutil"
        "os"
        "strings"
 
@@ -73,10 +72,10 @@
                data, err = FetchHTTPContent(arg)
 
        case arg == "stdin:":
-               data, err = ioutil.ReadAll(os.Stdin)
+               data, err = io.ReadAll(os.Stdin)
 
        default:
-               data, err = ioutil.ReadFile(arg)
+               data, err = os.ReadFile(arg)
        }
 
        if err != nil {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/infra/vprotogen/main.go 
new/v2ray-core-4.43.0/infra/vprotogen/main.go
--- old/v2ray-core-4.42.2/infra/vprotogen/main.go       2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/infra/vprotogen/main.go       2021-10-02 
18:07:52.000000000 +0200
@@ -4,7 +4,6 @@
        "fmt"
        "go/build"
        "io"
-       "io/ioutil"
        "net/http"
        "os"
        "os/exec"
@@ -46,7 +45,7 @@
        }
        var data []byte
        var runtimeEnv string
-       data, readErr := ioutil.ReadFile(file)
+       data, readErr := os.ReadFile(file)
        if readErr != nil {
                return "", readErr
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/v2ray-core-4.42.2/main/confloader/external/external.go 
new/v2ray-core-4.43.0/main/confloader/external/external.go
--- old/v2ray-core-4.42.2/main/confloader/external/external.go  2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/main/confloader/external/external.go  2021-10-02 
18:07:52.000000000 +0200
@@ -5,7 +5,6 @@
 import (
        "bytes"
        "io"
-       "io/ioutil"
        "net/http"
        "net/url"
        "os"
@@ -24,10 +23,10 @@
                data, err = FetchHTTPContent(arg)
 
        case arg == "stdin:":
-               data, err = ioutil.ReadAll(os.Stdin)
+               data, err = io.ReadAll(os.Stdin)
 
        default:
-               data, err = ioutil.ReadFile(arg)
+               data, err = os.ReadFile(arg)
        }
 
        if err != nil {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/main/main.go 
new/v2ray-core-4.43.0/main/main.go
--- old/v2ray-core-4.42.2/main/main.go  2021-09-17 15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/main/main.go  2021-10-02 18:07:52.000000000 +0200
@@ -5,7 +5,6 @@
 import (
        "flag"
        "fmt"
-       "io/ioutil"
        "log"
        "os"
        "os/signal"
@@ -54,7 +53,7 @@
 }
 
 func readConfDir(dirPath string) {
-       confs, err := ioutil.ReadDir(dirPath)
+       confs, err := os.ReadDir(dirPath)
        if err != nil {
                log.Fatalln(err)
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/proxy/shadowsocks/client.go 
new/v2ray-core-4.43.0/proxy/shadowsocks/client.go
--- old/v2ray-core-4.42.2/proxy/shadowsocks/client.go   2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/proxy/shadowsocks/client.go   2021-10-02 
18:07:52.000000000 +0200
@@ -5,6 +5,7 @@
 
 import (
        "context"
+       "time"
 
        core "github.com/v2fly/v2ray-core/v4"
        "github.com/v2fly/v2ray-core/v4/common"
@@ -102,18 +103,22 @@
        timer := signal.CancelAfterInactivity(ctx, cancel, 
sessionPolicy.Timeouts.ConnectionIdle)
 
        if request.Command == protocol.RequestCommandTCP {
-               bufferedWriter := buf.NewBufferedWriter(buf.NewWriter(conn))
-               bodyWriter, err := WriteTCPRequest(request, bufferedWriter)
-               if err != nil {
-                       return newError("failed to write request").Base(err)
-               }
-
-               if err := bufferedWriter.SetBuffered(false); err != nil {
-                       return err
-               }
-
                requestDone := func() error {
                        defer 
timer.SetTimeout(sessionPolicy.Timeouts.DownlinkOnly)
+                       bufferedWriter := 
buf.NewBufferedWriter(buf.NewWriter(conn))
+                       bodyWriter, err := WriteTCPRequest(request, 
bufferedWriter)
+                       if err != nil {
+                               return newError("failed to write 
request").Base(err)
+                       }
+
+                       if err = buf.CopyOnceTimeout(link.Reader, bodyWriter, 
time.Millisecond*100); err != nil && err != buf.ErrNotTimeoutReader && err != 
buf.ErrReadTimeout {
+                               return newError("failed to write A request 
payload").Base(err).AtWarning()
+                       }
+
+                       if err := bufferedWriter.SetBuffered(false); err != nil 
{
+                               return err
+                       }
+
                        return buf.Copy(link.Reader, bodyWriter, 
buf.UpdateActivity(timer))
                }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/proxy/trojan/server.go 
new/v2ray-core-4.43.0/proxy/trojan/server.go
--- old/v2ray-core-4.42.2/proxy/trojan/server.go        2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/proxy/trojan/server.go        2021-10-02 
18:07:52.000000000 +0200
@@ -5,7 +5,6 @@
 
 import (
        "context"
-       "crypto/tls"
        "io"
        "strconv"
        "time"
@@ -25,6 +24,7 @@
        "github.com/v2fly/v2ray-core/v4/features/policy"
        "github.com/v2fly/v2ray-core/v4/features/routing"
        "github.com/v2fly/v2ray-core/v4/transport/internet"
+       "github.com/v2fly/v2ray-core/v4/transport/internet/tls"
        "github.com/v2fly/v2ray-core/v4/transport/internet/udp"
 )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/release/debian/changelog 
new/v2ray-core-4.43.0/release/debian/changelog
--- old/v2ray-core-4.42.2/release/debian/changelog      2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/release/debian/changelog      2021-10-02 
18:07:52.000000000 +0200
@@ -1,3 +1,14 @@
+v2ray-core (4.42.2-2) unstable; urgency=medium
+
+  * Support Windows ARM64
+  * TLS: support client certificate authentication
+  * GeoIP asset: add trimmed GeoIP file `geoip-only-cn-private.dat` to zip 
package for ROM/RAM insufficient devices
+  * Socks: support 4/4a version of the socks protocol
+  * DNS: add option `disableFallbackIfMatch` for DNS
+  * More details in https://github.com/v2fly/v2ray-core/releases/tag/v4.42.2
+
+ -- V2Fly <[email protected]>  Mon, 20 Sep 2021 11:00:00 +0800
+
 v2ray-core (4.41.1-1) unstable; urgency=medium
 
   * VMess: added two VMess experiments: AuthenticatedLength & 
NoTerminationSignal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/release/debian/control 
new/v2ray-core-4.43.0/release/debian/control
--- old/v2ray-core-4.42.2/release/debian/control        2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/release/debian/control        2021-10-02 
18:07:52.000000000 +0200
@@ -4,7 +4,6 @@
 Maintainer: ymshenyu <[email protected]>
 Build-Depends:  debhelper-compat (= 12),
                 dh-golang,
-                golang-1.17
 Standards-Version: 4.5.0
 Homepage: https://github.com/v2fly/v2ray-core
 #Vcs-Browser: https://salsa.debian.org/debian/v2ray-core
@@ -16,7 +15,8 @@
 Architecture: any
 Depends: ${shlibs:Depends}, ${misc:Depends}
 Recommends: v2ray-domain-list-community,
-            v2ray-geoip
+            v2ray-geoip,
+            v2ray-geoip-only-cn-private
 Description: Library platform for building proxies in golang
  Project V2Ray is a set of network tools that help you to build your
  own computer network. It secures your network connections and thus
@@ -34,6 +34,14 @@
 Architecture: any
 Depends: ${shlibs:Depends}, ${misc:Depends}
 Description: Library platform for building proxies in golang (routing file)
+ Project V2Ray is a set of network tools that help you to build your
+ own computer network. It secures your network connections and thus
+ protects your privacy.
+
+Package: v2ray-geoip-only-cn-private
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Library platform for building proxies in golang (routing file)
  Project V2Ray is a set of network tools that help you to build your
  own computer network. It secures your network connections and thus
  protects your privacy.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/release/debian/copyright 
new/v2ray-core-4.43.0/release/debian/copyright
--- old/v2ray-core-4.42.2/release/debian/copyright      2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/release/debian/copyright      2021-10-02 
18:07:52.000000000 +0200
@@ -11,6 +11,10 @@
 Copyright: 2015-2020 V2Fly Community
 License: CC-BY-SA-4.0
 
+Files: release/config/geoip-only-cn-private.dat
+Copyright: 2015-2020 V2Fly Community
+License: CC-BY-SA-4.0
+
 Files: release/debian/*
 Copyright: 2020 ymshenyu <[email protected]>
 License: Expat
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/release/debian/rules 
new/v2ray-core-4.43.0/release/debian/rules
--- old/v2ray-core-4.42.2/release/debian/rules  2021-09-17 15:23:08.000000000 
+0200
+++ new/v2ray-core-4.43.0/release/debian/rules  2021-10-02 18:07:52.000000000 
+0200
@@ -5,16 +5,12 @@
 BUILDDIR=_build
 
 %:
-       dh $@ --builddirectory=$(BUILDDIR) --buildsystem=golang --with=golang
+       dh $@ --builddirectory=$(BUILDDIR) --buildsystem=golang
 
 execute_after_dh_auto_configure:
        go mod vendor
        cp -r vendor/* _build/src
 
-override_dh_auto_clean:
-       dh_auto_clean
-       rm -rf vendor
-
 override_dh_auto_build:
        DH_GOPKG="github.com/v2fly/v2ray-core/v4/main" dh_auto_build -- 
-ldflags "-s -w"
        cd $(BUILDDIR); mv bin/main bin/v2ray
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/v2ray-core-4.42.2/release/debian/v2ray-geoip-only-cn-private.install 
new/v2ray-core-4.43.0/release/debian/v2ray-geoip-only-cn-private.install
--- old/v2ray-core-4.42.2/release/debian/v2ray-geoip-only-cn-private.install    
1970-01-01 01:00:00.000000000 +0100
+++ new/v2ray-core-4.43.0/release/debian/v2ray-geoip-only-cn-private.install    
2021-10-02 18:07:52.000000000 +0200
@@ -0,0 +1 @@
+release/config/geoip-only-cn-private.dat usr/share/v2ray
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/testing/scenarios/common.go 
new/v2ray-core-4.43.0/testing/scenarios/common.go
--- old/v2ray-core-4.42.2/testing/scenarios/common.go   2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/testing/scenarios/common.go   2021-10-02 
18:07:52.000000000 +0200
@@ -5,7 +5,7 @@
        "crypto/rand"
        "fmt"
        "io"
-       "io/ioutil"
+       "os"
        "os/exec"
        "path/filepath"
        "runtime"
@@ -102,7 +102,7 @@
        testBinaryPathGen.Do(func() {
                var tempDir string
                common.Must(retry.Timed(5, 100).On(func() error {
-                       dir, err := ioutil.TempDir("", "v2ray")
+                       dir, err := os.MkdirTemp("", "v2ray")
                        if err != nil {
                                return err
                        }
@@ -143,6 +143,23 @@
        })
 }
 
+func CloseServer(server *exec.Cmd) {
+       log.Record(&log.GeneralMessage{
+               Severity: log.Severity_Info,
+               Content:  "Closing server.",
+       })
+       if runtime.GOOS == "windows" {
+               server.Process.Kill()
+       } else {
+               server.Process.Signal(syscall.SIGTERM)
+       }
+       server.Process.Wait()
+       log.Record(&log.GeneralMessage{
+               Severity: log.Severity_Info,
+               Content:  "Server closed.",
+       })
+}
+
 func withDefaultApps(config *core.Config) *core.Config {
        config.App = append(config.App, 
serial.ToTypedMessage(&dispatcher.Config{}))
        config.App = append(config.App, 
serial.ToTypedMessage(&proxyman.InboundConfig{}))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/testing/scenarios/dokodemo_test.go 
new/v2ray-core-4.43.0/testing/scenarios/dokodemo_test.go
--- old/v2ray-core-4.42.2/testing/scenarios/dokodemo_test.go    2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/testing/scenarios/dokodemo_test.go    2021-10-02 
18:07:52.000000000 +0200
@@ -156,7 +156,7 @@
                },
        }
 
-       clientPort := uint32(tcp.PickPort())
+       clientPort := uint32(udp.PickPort())
        clientPortRange := uint32(5)
        clientConfig := &core.Config{
                Inbound: []*core.InboundHandlerConfig{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/testing/scenarios/feature_test.go 
new/v2ray-core-4.43.0/testing/scenarios/feature_test.go
--- old/v2ray-core-4.42.2/testing/scenarios/feature_test.go     2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/testing/scenarios/feature_test.go     2021-10-02 
18:07:52.000000000 +0200
@@ -2,7 +2,7 @@
 
 import (
        "context"
-       "io/ioutil"
+       "io"
        "net/http"
        "net/url"
        "testing"
@@ -512,7 +512,7 @@
        common.Must(err)
        defer udpServer.Close()
 
-       clientPort := tcp.PickPort()
+       clientPort := udp.PickPort()
        clientConfig := &core.Config{
                Inbound: []*core.InboundHandlerConfig{
                        {
@@ -643,7 +643,7 @@
                if resp.StatusCode != 200 {
                        t.Error("unexpected status code: ", resp.StatusCode)
                }
-               common.Must(resp.Write(ioutil.Discard))
+               common.Must(resp.Write(io.Discard))
        }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/testing/scenarios/http_test.go 
new/v2ray-core-4.43.0/testing/scenarios/http_test.go
--- old/v2ray-core-4.42.2/testing/scenarios/http_test.go        2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/testing/scenarios/http_test.go        2021-10-02 
18:07:52.000000000 +0200
@@ -5,7 +5,6 @@
        "context"
        "crypto/rand"
        "io"
-       "io/ioutil"
        "net/http"
        "net/url"
        "testing"
@@ -75,7 +74,7 @@
                        t.Fatal("status: ", resp.StatusCode)
                }
 
-               content, err := ioutil.ReadAll(resp.Body)
+               content, err := io.ReadAll(resp.Body)
                common.Must(err)
                if string(content) != "Home" {
                        t.Fatal("body: ", string(content))
@@ -271,7 +270,7 @@
                        t.Fatal("status: ", resp.StatusCode)
                }
 
-               content, err := ioutil.ReadAll(resp.Body)
+               content, err := io.ReadAll(resp.Body)
                common.Must(err)
                if r := cmp.Diff(content, xor(payload)); r != "" {
                        t.Fatal(r)
@@ -368,7 +367,7 @@
                                t.Fatal("status: ", resp.StatusCode)
                        }
 
-                       content, err := ioutil.ReadAll(resp.Body)
+                       content, err := io.ReadAll(resp.Body)
                        common.Must(err)
                        if string(content) != "Home" {
                                t.Fatal("body: ", string(content))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/v2ray-core-4.42.2/testing/scenarios/shadowsocks_test.go 
new/v2ray-core-4.43.0/testing/scenarios/shadowsocks_test.go
--- old/v2ray-core-4.42.2/testing/scenarios/shadowsocks_test.go 2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/testing/scenarios/shadowsocks_test.go 2021-10-02 
18:07:52.000000000 +0200
@@ -215,7 +215,7 @@
                CipherType: shadowsocks.CipherType_AES_128_GCM,
        })
 
-       serverPort := tcp.PickPort()
+       serverPort := udp.PickPort()
        serverConfig := &core.Config{
                App: []*serial.TypedMessage{
                        serial.ToTypedMessage(&log.Config{
@@ -245,7 +245,7 @@
                },
        }
 
-       clientPort := tcp.PickPort()
+       clientPort := udp.PickPort()
        clientConfig := &core.Config{
                App: []*serial.TypedMessage{
                        serial.ToTypedMessage(&log.Config{
@@ -341,7 +341,7 @@
                },
        }
 
-       clientPort := tcp.PickPort()
+       clientPort := udp.PickPort()
        clientConfig := &core.Config{
                App: []*serial.TypedMessage{
                        serial.ToTypedMessage(&log.Config{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/v2ray-core-4.42.2/testing/scenarios/transport_test.go 
new/v2ray-core-4.43.0/testing/scenarios/transport_test.go
--- old/v2ray-core-4.42.2/testing/scenarios/transport_test.go   2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/testing/scenarios/transport_test.go   2021-10-02 
18:07:52.000000000 +0200
@@ -23,6 +23,7 @@
        "github.com/v2fly/v2ray-core/v4/proxy/vmess/inbound"
        "github.com/v2fly/v2ray-core/v4/proxy/vmess/outbound"
        "github.com/v2fly/v2ray-core/v4/testing/servers/tcp"
+       "github.com/v2fly/v2ray-core/v4/testing/servers/udp"
        "github.com/v2fly/v2ray-core/v4/transport/internet"
        "github.com/v2fly/v2ray-core/v4/transport/internet/domainsocket"
        "github.com/v2fly/v2ray-core/v4/transport/internet/headers/http"
@@ -257,7 +258,7 @@
        defer tcpServer.Close()
 
        userID := protocol.NewID(uuid.New())
-       serverPort := tcp.PickPort()
+       serverPort := udp.PickPort()
        serverConfig := &core.Config{
                App: []*serial.TypedMessage{
                        serial.ToTypedMessage(&log.Config{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/testing/scenarios/vmess_test.go 
new/v2ray-core-4.43.0/testing/scenarios/vmess_test.go
--- old/v2ray-core-4.42.2/testing/scenarios/vmess_test.go       2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/testing/scenarios/vmess_test.go       2021-10-02 
18:07:52.000000000 +0200
@@ -36,59 +36,87 @@
        defer tcpServer.Close()
 
        userID := protocol.NewID(uuid.New())
+
+       retry := 1
        serverPort := tcp.PickPort()
-       serverConfig := &core.Config{
-               App: []*serial.TypedMessage{
-                       serial.ToTypedMessage(&log.Config{
-                               ErrorLogLevel: clog.Severity_Debug,
-                               ErrorLogType:  log.LogType_Console,
-                       }),
-               },
-               Inbound: []*core.InboundHandlerConfig{
-                       {
-                               ReceiverSettings: 
serial.ToTypedMessage(&proxyman.ReceiverConfig{
-                                       PortRange: 
net.SinglePortRange(serverPort),
-                                       Listen:    
net.NewIPOrDomain(net.LocalHostIP),
-                               }),
-                               ProxySettings: 
serial.ToTypedMessage(&inbound.Config{
-                                       User: []*protocol.User{
-                                               {
-                                                       Account: 
serial.ToTypedMessage(&vmess.Account{
-                                                               Id: 
userID.String(),
-                                                       }),
+       for {
+               serverConfig := &core.Config{
+                       App: []*serial.TypedMessage{
+                               serial.ToTypedMessage(&log.Config{
+                                       ErrorLogLevel: clog.Severity_Debug,
+                                       ErrorLogType:  log.LogType_Console,
+                               }),
+                       },
+                       Inbound: []*core.InboundHandlerConfig{
+                               {
+                                       ReceiverSettings: 
serial.ToTypedMessage(&proxyman.ReceiverConfig{
+                                               PortRange: 
net.SinglePortRange(serverPort),
+                                               Listen:    
net.NewIPOrDomain(net.LocalHostIP),
+                                       }),
+                                       ProxySettings: 
serial.ToTypedMessage(&inbound.Config{
+                                               User: []*protocol.User{
+                                                       {
+                                                               Account: 
serial.ToTypedMessage(&vmess.Account{
+                                                                       Id: 
userID.String(),
+                                                               }),
+                                                       },
                                                },
-                                       },
-                                       Detour: &inbound.DetourConfig{
-                                               To: "detour",
-                                       },
-                               }),
-                       },
-                       {
-                               ReceiverSettings: 
serial.ToTypedMessage(&proxyman.ReceiverConfig{
-                                       PortRange: &net.PortRange{
-                                               From: uint32(serverPort + 1),
-                                               To:   uint32(serverPort + 100),
-                                       },
-                                       Listen: 
net.NewIPOrDomain(net.LocalHostIP),
-                                       AllocationStrategy: 
&proxyman.AllocationStrategy{
-                                               Type: 
proxyman.AllocationStrategy_Random,
-                                               Concurrency: 
&proxyman.AllocationStrategy_AllocationStrategyConcurrency{
-                                                       Value: 2,
+                                               Detour: &inbound.DetourConfig{
+                                                       To: "detour",
                                                },
-                                               Refresh: 
&proxyman.AllocationStrategy_AllocationStrategyRefresh{
-                                                       Value: 5,
+                                       }),
+                               },
+                               {
+                                       ReceiverSettings: 
serial.ToTypedMessage(&proxyman.ReceiverConfig{
+                                               PortRange: 
net.SinglePortRange(serverPort + 100),
+                                               Listen:    
net.NewIPOrDomain(net.LocalHostIP),
+                                       }),
+                                       ProxySettings: 
serial.ToTypedMessage(&dokodemo.Config{
+                                               Address: 
net.NewIPOrDomain(dest.Address),
+                                               Port:    uint32(dest.Port),
+                                               NetworkList: &net.NetworkList{
+                                                       Network: 
[]net.Network{net.Network_TCP},
                                                },
-                                       },
-                               }),
-                               ProxySettings: 
serial.ToTypedMessage(&inbound.Config{}),
-                               Tag:           "detour",
-                       },
-               },
-               Outbound: []*core.OutboundHandlerConfig{
-                       {
-                               ProxySettings: 
serial.ToTypedMessage(&freedom.Config{}),
+                                       }),
+                               },
+                               {
+                                       ReceiverSettings: 
serial.ToTypedMessage(&proxyman.ReceiverConfig{
+                                               PortRange: &net.PortRange{
+                                                       From: uint32(serverPort 
+ 1),
+                                                       To:   uint32(serverPort 
+ 99),
+                                               },
+                                               Listen: 
net.NewIPOrDomain(net.LocalHostIP),
+                                               AllocationStrategy: 
&proxyman.AllocationStrategy{
+                                                       Type: 
proxyman.AllocationStrategy_Random,
+                                                       Concurrency: 
&proxyman.AllocationStrategy_AllocationStrategyConcurrency{
+                                                               Value: 2,
+                                                       },
+                                                       Refresh: 
&proxyman.AllocationStrategy_AllocationStrategyRefresh{
+                                                               Value: 5,
+                                                       },
+                                               },
+                                       }),
+                                       ProxySettings: 
serial.ToTypedMessage(&inbound.Config{}),
+                                       Tag:           "detour",
+                               },
+                       },
+                       Outbound: []*core.OutboundHandlerConfig{
+                               {
+                                       ProxySettings: 
serial.ToTypedMessage(&freedom.Config{}),
+                               },
                        },
-               },
+               }
+
+               server, _ := InitializeServerConfig(serverConfig)
+               if server != nil && tcpConnAvailableAtPort(t, serverPort+100) {
+                       defer CloseServer(server)
+                       break
+               }
+               retry++
+               if retry > 5 {
+                       t.Fatal("All attempts failed to start server")
+               }
+               serverPort = tcp.PickPort()
        }
 
        clientPort := tcp.PickPort()
@@ -135,15 +163,30 @@
                },
        }
 
-       servers, err := InitializeServerConfigs(serverConfig, clientConfig)
+       server, err := InitializeServerConfig(clientConfig)
        common.Must(err)
-       defer CloseAllServers(servers)
+       defer CloseServer(server)
 
-       for i := 0; i < 10; i++ {
-               if err := testTCPConn(clientPort, 1024, time.Second*2)(); err 
!= nil {
-                       t.Error(err)
+       if !tcpConnAvailableAtPort(t, clientPort) {
+               t.Fail()
+       }
+}
+
+func tcpConnAvailableAtPort(t *testing.T, port net.Port) bool {
+       for i := 1; ; i++ {
+               if i > 10 {
+                       t.Log("All attempts failed to test tcp conn")
+                       return false
+               }
+               time.Sleep(time.Millisecond * 10)
+               if err := testTCPConn(port, 1024, time.Second*2)(); err != nil {
+                       t.Log("err ", err)
+               } else {
+                       t.Log("success with", i, "attempts")
+                       break
                }
        }
+       return true
 }
 
 func TestVMessGCM(t *testing.T) {
@@ -403,7 +446,7 @@
                },
        }
 
-       clientPort := tcp.PickPort()
+       clientPort := udp.PickPort()
        clientConfig := &core.Config{
                App: []*serial.TypedMessage{
                        serial.ToTypedMessage(&log.Config{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/transport/internet/config.pb.go 
new/v2ray-core-4.43.0/transport/internet/config.pb.go
--- old/v2ray-core-4.42.2/transport/internet/config.pb.go       2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/transport/internet/config.pb.go       2021-10-02 
18:07:52.000000000 +0200
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 //     protoc-gen-go v1.27.1
-//     protoc        v3.18.0--rc2
+//     protoc        v3.18.0
 // source: transport/internet/config.proto
 
 package internet
@@ -421,6 +421,7 @@
        BindPort                   uint32 
`protobuf:"varint,6,opt,name=bind_port,json=bindPort,proto3" 
json:"bind_port,omitempty"`
        AcceptProxyProtocol        bool   
`protobuf:"varint,7,opt,name=accept_proxy_protocol,json=acceptProxyProtocol,proto3"
 json:"accept_proxy_protocol,omitempty"`
        TcpKeepAliveInterval       int32  
`protobuf:"varint,8,opt,name=tcp_keep_alive_interval,json=tcpKeepAliveInterval,proto3"
 json:"tcp_keep_alive_interval,omitempty"`
+       TfoQueueLength             uint32 
`protobuf:"varint,9,opt,name=tfo_queue_length,json=tfoQueueLength,proto3" 
json:"tfo_queue_length,omitempty"`
 }
 
 func (x *SocketConfig) Reset() {
@@ -511,6 +512,13 @@
        return 0
 }
 
+func (x *SocketConfig) GetTfoQueueLength() uint32 {
+       if x != nil {
+               return x.TfoQueueLength
+       }
+       return 0
+}
+
 var File_transport_internet_config_proto protoreflect.FileDescriptor
 
 var file_transport_internet_config_proto_rawDesc = []byte{
@@ -565,7 +573,7 @@
        0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x30, 
0x0a, 0x13, 0x74, 0x72,
        0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x61, 0x79, 0x65, 0x72, 
0x50, 0x72, 0x6f, 0x78,
        0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x74, 0x72, 0x61, 
0x6e, 0x73, 0x70, 0x6f,
-       0x72, 0x74, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x78, 0x79, 
0x22, 0x98, 0x04, 0x0a,
+       0x72, 0x74, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x78, 0x79, 
0x22, 0xc2, 0x04, 0x0a,
        0x0c, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 
0x67, 0x12, 0x12, 0x0a,
        0x04, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 
0x04, 0x6d, 0x61, 0x72,
        0x6b, 0x12, 0x4e, 0x0a, 0x03, 0x74, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 
0x28, 0x0e, 0x32, 0x3c,
@@ -592,28 +600,30 @@
        0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x35, 0x0a, 0x17, 
0x74, 0x63, 0x70, 0x5f,
        0x6b, 0x65, 0x65, 0x70, 0x5f, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x69, 
0x6e, 0x74, 0x65, 0x72,
        0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x74, 
0x63, 0x70, 0x4b, 0x65,
-       0x65, 0x70, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 
0x76, 0x61, 0x6c, 0x22,
-       0x35, 0x0a, 0x10, 0x54, 0x43, 0x50, 0x46, 0x61, 0x73, 0x74, 0x4f, 0x70, 
0x65, 0x6e, 0x53, 0x74,
-       0x61, 0x74, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x73, 0x49, 0x73, 0x10, 
0x00, 0x12, 0x0a, 0x0a,
-       0x06, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x10, 0x01, 0x12, 0x0b, 0x0a, 
0x07, 0x44, 0x69, 0x73,
-       0x61, 0x62, 0x6c, 0x65, 0x10, 0x02, 0x22, 0x2f, 0x0a, 0x0a, 0x54, 0x50, 
0x72, 0x6f, 0x78, 0x79,
-       0x4d, 0x6f, 0x64, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x66, 0x66, 0x10, 
0x00, 0x12, 0x0a, 0x0a,
-       0x06, 0x54, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x10, 0x01, 0x12, 0x0c, 0x0a, 
0x08, 0x52, 0x65, 0x64,
-       0x69, 0x72, 0x65, 0x63, 0x74, 0x10, 0x02, 0x2a, 0x5a, 0x0a, 0x11, 0x54, 
0x72, 0x61, 0x6e, 0x73,
-       0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 
0x12, 0x07, 0x0a, 0x03,
-       0x54, 0x43, 0x50, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x44, 0x50, 
0x10, 0x01, 0x12, 0x08,
-       0x0a, 0x04, 0x4d, 0x4b, 0x43, 0x50, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 
0x57, 0x65, 0x62, 0x53,
-       0x6f, 0x63, 0x6b, 0x65, 0x74, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x48, 
0x54, 0x54, 0x50, 0x10,
-       0x04, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 
0x6f, 0x63, 0x6b, 0x65,
-       0x74, 0x10, 0x05, 0x42, 0x78, 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 
0x32, 0x72, 0x61, 0x79,
-       0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 
0x6f, 0x72, 0x74, 0x2e,
-       0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x01, 0x5a, 0x31, 
0x67, 0x69, 0x74, 0x68,
-       0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x32, 0x66, 0x6c, 0x79, 
0x2f, 0x76, 0x32, 0x72,
-       0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x34, 0x2f, 0x74, 
0x72, 0x61, 0x6e, 0x73,
-       0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 
0x74, 0xaa, 0x02, 0x1d,
-       0x56, 0x32, 0x52, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x2e, 0x54, 
0x72, 0x61, 0x6e, 0x73,
-       0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 
0x74, 0x62, 0x06, 0x70,
-       0x72, 0x6f, 0x74, 0x6f, 0x33,
+       0x65, 0x70, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 
0x76, 0x61, 0x6c, 0x12,
+       0x28, 0x0a, 0x10, 0x74, 0x66, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 
0x5f, 0x6c, 0x65, 0x6e,
+       0x67, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 
0x66, 0x6f, 0x51, 0x75,
+       0x65, 0x75, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x35, 0x0a, 
0x10, 0x54, 0x43, 0x50,
+       0x46, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 
0x65, 0x12, 0x08, 0x0a,
+       0x04, 0x41, 0x73, 0x49, 0x73, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x45, 
0x6e, 0x61, 0x62, 0x6c,
+       0x65, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x69, 0x73, 0x61, 0x62, 
0x6c, 0x65, 0x10, 0x02,
+       0x22, 0x2f, 0x0a, 0x0a, 0x54, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4d, 0x6f, 
0x64, 0x65, 0x12, 0x07,
+       0x0a, 0x03, 0x4f, 0x66, 0x66, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x54, 
0x50, 0x72, 0x6f, 0x78,
+       0x79, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x64, 0x69, 0x72, 
0x65, 0x63, 0x74, 0x10,
+       0x02, 0x2a, 0x5a, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 
0x72, 0x74, 0x50, 0x72,
+       0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, 
0x50, 0x10, 0x00, 0x12,
+       0x07, 0x0a, 0x03, 0x55, 0x44, 0x50, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 
0x4d, 0x4b, 0x43, 0x50,
+       0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x57, 0x65, 0x62, 0x53, 0x6f, 0x63, 
0x6b, 0x65, 0x74, 0x10,
+       0x03, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, 0x10, 0x04, 0x12, 
0x10, 0x0a, 0x0c, 0x44,
+       0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x10, 
0x05, 0x42, 0x78, 0x0a,
+       0x21, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 
0x6f, 0x72, 0x65, 0x2e,
+       0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 
0x74, 0x65, 0x72, 0x6e,
+       0x65, 0x74, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 
0x2e, 0x63, 0x6f, 0x6d,
+       0x2f, 0x76, 0x32, 0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x72, 0x61, 0x79, 
0x2d, 0x63, 0x6f, 0x72,
+       0x65, 0x2f, 0x76, 0x34, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 
0x72, 0x74, 0x2f, 0x69,
+       0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0xaa, 0x02, 0x1d, 0x56, 0x32, 
0x52, 0x61, 0x79, 0x2e,
+       0x43, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 
0x72, 0x74, 0x2e, 0x49,
+       0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 
0x74, 0x6f, 0x33,
 }
 
 var (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/v2ray-core-4.42.2/transport/internet/config.proto 
new/v2ray-core-4.43.0/transport/internet/config.proto
--- old/v2ray-core-4.42.2/transport/internet/config.proto       2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/transport/internet/config.proto       2021-10-02 
18:07:52.000000000 +0200
@@ -93,4 +93,6 @@
   bool accept_proxy_protocol = 7;
 
   int32 tcp_keep_alive_interval = 8;
+
+  uint32 tfo_queue_length = 9;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/v2ray-core-4.42.2/transport/internet/sockopt_linux.go 
new/v2ray-core-4.43.0/transport/internet/sockopt_linux.go
--- old/v2ray-core-4.42.2/transport/internet/sockopt_linux.go   2021-09-17 
15:23:08.000000000 +0200
+++ new/v2ray-core-4.43.0/transport/internet/sockopt_linux.go   2021-10-02 
18:07:52.000000000 +0200
@@ -84,8 +84,8 @@
        if isTCPSocket(network) {
                switch config.Tfo {
                case SocketConfig_Enable:
-                       if err := syscall.SetsockoptInt(int(fd), 
syscall.SOL_TCP, TCP_FASTOPEN, 1); err != nil {
-                               return newError("failed to set 
TCP_FASTOPEN=1").Base(err)
+                       if err := syscall.SetsockoptInt(int(fd), 
syscall.SOL_TCP, TCP_FASTOPEN, int(config.TfoQueueLength)); err != nil {
+                               return newError("failed to set TCP_FASTOPEN=", 
config.TfoQueueLength).Base(err)
                        }
                case SocketConfig_Disable:
                        if err := syscall.SetsockoptInt(int(fd), 
syscall.SOL_TCP, TCP_FASTOPEN, 0); err != nil {

++++++ v2ray-extra.zip ++++++
Binary files /var/tmp/diff_new_pack.FfGjgU/_old and 
/var/tmp/diff_new_pack.FfGjgU/_new differ

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/v2ray-core/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.v2ray-core.new.1890/vendor.tar.gz differ: char 1, 
line 1

Reply via email to