mirror of
https://github.com/MetaCubeX/Clash.Meta.git
synced 2025-04-11 04:50:56 +00:00
chore: update anytls
This commit is contained in:
parent
7b382611bb
commit
e76c1b65ca
3 changed files with 16 additions and 19 deletions
|
@ -15,10 +15,10 @@ import (
|
|||
const CheckMark = -1
|
||||
|
||||
var DefaultPaddingScheme = []byte(`stop=8
|
||||
0=34-120
|
||||
0=30-30
|
||||
1=100-400
|
||||
2=400-500,c,500-1000,c,400-500,c,500-1000,c,500-1000,c,400-500
|
||||
3=500-1000
|
||||
2=400-500,c,500-1000,c,500-1000,c,500-1000,c,500-1000
|
||||
3=9-9,500-1000
|
||||
4=500-1000
|
||||
5=500-1000
|
||||
6=500-1000
|
||||
|
|
|
@ -105,15 +105,15 @@ func (s *Session) Close() error {
|
|||
close(s.die)
|
||||
once = true
|
||||
})
|
||||
|
||||
if once {
|
||||
if s.dieHook != nil {
|
||||
s.dieHook()
|
||||
}
|
||||
s.streamLock.Lock()
|
||||
for k := range s.streams {
|
||||
s.streams[k].sessionClose()
|
||||
s.streams[k].Close()
|
||||
}
|
||||
s.streams = make(map[uint32]*Stream)
|
||||
s.streamLock.Unlock()
|
||||
return s.conn.Close()
|
||||
} else {
|
||||
|
@ -265,7 +265,7 @@ func (s *Session) recvLoop() error {
|
|||
}
|
||||
if s.isClient {
|
||||
if padding.UpdatePaddingScheme(rawScheme, s.padding) {
|
||||
log.Infoln("[Update padding succeed] %x\n", md5.Sum(rawScheme))
|
||||
log.Debugln("[Update padding succeed] %x\n", md5.Sum(rawScheme))
|
||||
} else {
|
||||
log.Warnln("[Update padding failed] %x\n", md5.Sum(rawScheme))
|
||||
}
|
||||
|
@ -280,8 +280,10 @@ func (s *Session) recvLoop() error {
|
|||
}
|
||||
}
|
||||
|
||||
// notify the session that a stream has closed
|
||||
func (s *Session) streamClosed(sid uint32) error {
|
||||
if s.IsClosed() {
|
||||
return io.ErrClosedPipe
|
||||
}
|
||||
_, err := s.writeFrame(newFrame(cmdFIN, sid))
|
||||
s.streamLock.Lock()
|
||||
delete(s.streams, sid)
|
||||
|
|
|
@ -54,25 +54,20 @@ func (s *Stream) Write(b []byte) (n int, err error) {
|
|||
|
||||
// Close implements net.Conn
|
||||
func (s *Stream) Close() error {
|
||||
if s.sessionClose() {
|
||||
// notify remote
|
||||
return s.sess.streamClosed(s.id)
|
||||
} else {
|
||||
return io.ErrClosedPipe
|
||||
}
|
||||
}
|
||||
|
||||
// sessionClose close stream from session side, do not notify remote
|
||||
func (s *Stream) sessionClose() (once bool) {
|
||||
var once bool
|
||||
s.dieOnce.Do(func() {
|
||||
s.pipeR.Close()
|
||||
once = true
|
||||
})
|
||||
if once {
|
||||
if s.dieHook != nil {
|
||||
s.dieHook()
|
||||
s.dieHook = nil
|
||||
}
|
||||
})
|
||||
return
|
||||
return s.sess.streamClosed(s.id)
|
||||
} else {
|
||||
return io.ErrClosedPipe
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Stream) SetReadDeadline(t time.Time) error {
|
||||
|
|
Loading…
Add table
Reference in a new issue