mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-07-03 02:08:45 +00:00
correct time
This commit is contained in:
+15
-10
@@ -40,8 +40,14 @@ type PacketConnWrapper struct {
|
|||||||
T *signal.ActivityTimer
|
T *signal.ActivityTimer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *PacketConnWrapper) ReadPacket(buffer *B.Buffer) (M.Socksaddr, error) {
|
func (w *PacketConnWrapper) ReadPacket(buffer *B.Buffer) (addr M.Socksaddr, err error) {
|
||||||
w.T.Update()
|
w.T.Update()
|
||||||
|
defer func() {
|
||||||
|
if err != nil {
|
||||||
|
// uplinkonly
|
||||||
|
w.T.SetTimeout(2 * time.Second)
|
||||||
|
}
|
||||||
|
}()
|
||||||
if w.cached != nil {
|
if w.cached != nil {
|
||||||
mb, bb := buf.SplitFirst(w.cached)
|
mb, bb := buf.SplitFirst(w.cached)
|
||||||
if bb == nil {
|
if bb == nil {
|
||||||
@@ -60,11 +66,6 @@ func (w *PacketConnWrapper) ReadPacket(buffer *B.Buffer) (M.Socksaddr, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
mb, err := w.ReadMultiBuffer()
|
mb, err := w.ReadMultiBuffer()
|
||||||
if err != nil {
|
|
||||||
// uplinkonly
|
|
||||||
w.T.SetTimeout(3 * time.Second)
|
|
||||||
return M.Socksaddr{}, err
|
|
||||||
}
|
|
||||||
nb, bb := buf.SplitFirst(mb)
|
nb, bb := buf.SplitFirst(mb)
|
||||||
if bb == nil {
|
if bb == nil {
|
||||||
return M.Socksaddr{}, nil
|
return M.Socksaddr{}, nil
|
||||||
@@ -82,18 +83,22 @@ func (w *PacketConnWrapper) ReadPacket(buffer *B.Buffer) (M.Socksaddr, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *PacketConnWrapper) WritePacket(buffer *B.Buffer, destination M.Socksaddr) error {
|
func (w *PacketConnWrapper) WritePacket(buffer *B.Buffer, destination M.Socksaddr) (err error) {
|
||||||
w.T.Update()
|
w.T.Update()
|
||||||
|
defer func() {
|
||||||
|
if err != nil {
|
||||||
|
// downlinkonly
|
||||||
|
w.T.SetTimeout(5 * time.Second)
|
||||||
|
}
|
||||||
|
}()
|
||||||
endpoint, err := ToDestination(destination, net.Network_UDP)
|
endpoint, err := ToDestination(destination, net.Network_UDP)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// uplinkonly
|
|
||||||
w.T.SetTimeout(3 * time.Second)
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
vBuf := buf.New()
|
vBuf := buf.New()
|
||||||
vBuf.Write(buffer.Bytes())
|
vBuf.Write(buffer.Bytes())
|
||||||
vBuf.UDP = &endpoint
|
vBuf.UDP = &endpoint
|
||||||
return w.Writer.WriteMultiBuffer(buf.MultiBuffer{vBuf})
|
return w.WriteMultiBuffer(buf.MultiBuffer{vBuf})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *PacketConnWrapper) Close() error {
|
func (w *PacketConnWrapper) Close() error {
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ func (w *PipeConnWrapper) Read(b []byte) (n int, err error) {
|
|||||||
n, err = w.R.Read(b)
|
n, err = w.R.Read(b)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// uplinkonly
|
// uplinkonly
|
||||||
w.T.SetTimeout(3 * time.Second)
|
w.T.SetTimeout(2 * time.Second)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -75,7 +75,7 @@ func (w *PipeConnWrapper) Write(p []byte) (n int, err error) {
|
|||||||
n = 0
|
n = 0
|
||||||
buf.ReleaseMulti(mb)
|
buf.ReleaseMulti(mb)
|
||||||
// downlinkonly
|
// downlinkonly
|
||||||
w.T.SetTimeout(3 * time.Second)
|
w.T.SetTimeout(5 * time.Second)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user