Compare commits

..

24 Commits

Author SHA1 Message Date
世界
210e032dad documentation: Bump version 2023-12-31 15:56:51 +08:00
世界
7ec284159d documentation: Update package managers 2023-12-31 15:56:41 +08:00
世界
93c1235d94 Remove unnecessary context wrappers 2023-12-31 15:56:41 +08:00
世界
7a54123fbc Improve read wait interface &
Refactor Authenticator interface to struct &
Update smux &
Update gVisor to 20231204.0 &
Update quic-go to v0.40.1 &
Update wireguard-go &
Add GSO support for TUN/WireGuard &
Fix router pre-start &
Fix bind forwarder to interface for systems stack
2023-12-31 15:56:37 +08:00
世界
89eb126fa3 Make generated files have SUDO_USER's permissions if possible. 2023-12-30 12:26:47 +08:00
世界
03f91cf7ce Refactor inbound/outbound options struct 2023-12-30 12:26:47 +08:00
世界
281385ed11 Improve configuration merge 2023-12-30 12:26:47 +08:00
世界
9f275c4cd7 Update uTLS to 1.5.4 2023-12-30 12:26:46 +08:00
世界
1638b2df39 Update tfo-go 2023-12-30 12:26:46 +08:00
世界
8fe3fc2975 Update gomobile and add tag 2023-12-30 12:26:46 +08:00
世界
c7bbacaefc Update cloudflare-tls to go1.21.5 2023-12-30 12:26:46 +08:00
世界
705c9e3bbd Make type check strict 2023-12-30 12:26:46 +08:00
世界
ecc8da67f1 Remove comparable limit for Listable 2023-12-30 12:26:46 +08:00
世界
5a9204a78a Avoid opening log output before start &
Replace tracing logs with task monitor
2023-12-30 12:26:46 +08:00
世界
5a700c8fe6 Update documentation 2023-12-30 12:26:45 +08:00
世界
a42ca841df Add idle_timeout for URLTest outbound 2023-12-30 12:26:45 +08:00
世界
3f6a76b061 Skip internal fake-ip queries 2023-12-30 12:26:45 +08:00
世界
f1b92500fa Migrate contentjson and badjson to library &
Add omitempty in format
2023-12-30 12:26:44 +08:00
世界
7354b0c48d Update documentation 2023-12-30 12:26:44 +08:00
世界
0555855daf Independent source_ip_is_private and ip_is_private rules 2023-12-30 12:26:44 +08:00
世界
44037bba08 Add rule-set 2023-12-30 12:26:44 +08:00
世界
794a2ce5ee Update buffer usage 2023-12-30 12:26:44 +08:00
世界
a000cfcddf Allow nested logical rules 2023-12-30 12:26:44 +08:00
世界
89823f1034 Migrate to independent cache file 2023-12-30 12:26:44 +08:00
4 changed files with 22 additions and 23 deletions

View File

@@ -2,7 +2,7 @@
icon: material/alert-decagram
---
#### 1.8.0-rc.10
#### 1.8.0-rc.9
* Fixes and improvements

2
go.mod
View File

@@ -28,7 +28,7 @@ require (
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691
github.com/sagernet/sing v0.3.0-rc.7
github.com/sagernet/sing-dns v0.1.12
github.com/sagernet/sing-mux v0.1.8-rc.1
github.com/sagernet/sing-mux v0.1.7-rc.2
github.com/sagernet/sing-quic v0.1.7-rc.2
github.com/sagernet/sing-shadowsocks v0.2.6
github.com/sagernet/sing-shadowsocks2 v0.1.6-rc.1

4
go.sum
View File

@@ -113,8 +113,8 @@ github.com/sagernet/sing v0.3.0-rc.7 h1:FmnzFRYC6usVgWf112cUxiexwvL+iAurKmCL4Axa
github.com/sagernet/sing v0.3.0-rc.7/go.mod h1:9pfuAH6mZfgnz/YjP6xu5sxx882rfyjpcrTdUpd6w3g=
github.com/sagernet/sing-dns v0.1.12 h1:1HqZ+ln+Rezx/aJMStaS0d7oPeX2EobSV1NT537kyj4=
github.com/sagernet/sing-dns v0.1.12/go.mod h1:rx/DTOisneQpCgNQ4jbFU/JNEtnz0lYcHXenlVzpjEU=
github.com/sagernet/sing-mux v0.1.8-rc.1 h1:5dsZgWmNr9W6JzQj4fb3xX2pMP0OyJH6kVtlqc2kFKA=
github.com/sagernet/sing-mux v0.1.8-rc.1/go.mod h1:KK5zCbNujj5kn36G+wLFROOXyJhaaXLyaZWY2w7kBNQ=
github.com/sagernet/sing-mux v0.1.7-rc.2 h1:0/LZ+sNo0xXnqbKS8qaOwBb+uPhyjlGLv2b2W5xJwII=
github.com/sagernet/sing-mux v0.1.7-rc.2/go.mod h1:KK5zCbNujj5kn36G+wLFROOXyJhaaXLyaZWY2w7kBNQ=
github.com/sagernet/sing-quic v0.1.7-rc.2 h1:rCWhtvzQwgkWbX4sVHYdNwzyPweoUPEgBCBatywHjMs=
github.com/sagernet/sing-quic v0.1.7-rc.2/go.mod h1:IbKCPWXP13zd3cdu0rirtYjkMlquc5zWtc3avfSUGAw=
github.com/sagernet/sing-shadowsocks v0.2.6 h1:xr7ylAS/q1cQYS8oxKKajhuQcchd5VJJ4K4UZrrpp0s=

View File

@@ -2,16 +2,19 @@ package v2raygrpclite
import (
std_bufio "bufio"
"bytes"
"encoding/binary"
"io"
"net"
"net/http"
"os"
"sync"
"time"
"github.com/sagernet/sing/common"
"github.com/sagernet/sing/common/baderror"
"github.com/sagernet/sing/common/buf"
"github.com/sagernet/sing/common/bufio"
M "github.com/sagernet/sing/common/metadata"
"github.com/sagernet/sing/common/rw"
)
@@ -27,6 +30,7 @@ type GunConn struct {
create chan struct{}
err error
readRemaining int
writeAccess sync.Mutex
}
func newGunConn(reader io.Reader, writer io.Writer, flusher http.Flusher) *GunConn {
@@ -96,22 +100,19 @@ func (c *GunConn) read(b []byte) (n int, err error) {
}
func (c *GunConn) Write(b []byte) (n int, err error) {
varLen := rw.UVariantLen(uint64(len(b)))
buffer := buf.NewSize(6 + varLen + len(b))
header := buffer.Extend(6 + varLen)
header[0] = 0x00
binary.BigEndian.PutUint32(header[1:5], uint32(1+varLen+len(b)))
header[5] = 0x0A
binary.PutUvarint(header[6:], uint64(len(b)))
common.Must1(buffer.Write(b))
_, err = c.writer.Write(buffer.Bytes())
if err != nil {
return 0, baderror.WrapH2(err)
}
if c.flusher != nil {
protobufHeader := [1 + binary.MaxVarintLen64]byte{0x0A}
varuintLen := binary.PutUvarint(protobufHeader[1:], uint64(len(b)))
grpcHeader := buf.Get(5)
grpcPayloadLen := uint32(1 + varuintLen + len(b))
binary.BigEndian.PutUint32(grpcHeader[1:5], grpcPayloadLen)
c.writeAccess.Lock()
_, err = bufio.Copy(c.writer, io.MultiReader(bytes.NewReader(grpcHeader), bytes.NewReader(protobufHeader[:varuintLen+1]), bytes.NewReader(b)))
c.writeAccess.Unlock()
buf.Put(grpcHeader)
if err == nil && c.flusher != nil {
c.flusher.Flush()
}
return len(b), nil
return len(b), baderror.WrapH2(err)
}
func (c *GunConn) WriteBuffer(buffer *buf.Buffer) error {
@@ -119,18 +120,16 @@ func (c *GunConn) WriteBuffer(buffer *buf.Buffer) error {
dataLen := buffer.Len()
varLen := rw.UVariantLen(uint64(dataLen))
header := buffer.ExtendHeader(6 + varLen)
_ = header[6]
header[0] = 0x00
binary.BigEndian.PutUint32(header[1:5], uint32(1+varLen+dataLen))
header[5] = 0x0A
binary.PutUvarint(header[6:], uint64(dataLen))
err := rw.WriteBytes(c.writer, buffer.Bytes())
if err != nil {
return baderror.WrapH2(err)
}
if c.flusher != nil {
if err == nil && c.flusher != nil {
c.flusher.Flush()
}
return nil
return baderror.WrapH2(err)
}
func (c *GunConn) FrontHeadroom() int {