RPRX
2026-11-08 02:45:14 +00:00
co-authored by StarProxima
parent 2e4c13d8c4
commit 5745dea2b4
3 changed files with 15 additions and 1 deletions
+1
View File
@@ -188,6 +188,7 @@ var (
// NewClientWorker creates a new mux.Client.
func NewClientWorker(stream transport.Link, s ClientStrategy) (*ClientWorker, error) {
stream.Writer = &MutexWriter{Writer: stream.Writer}
c := &ClientWorker{
sessionManager: NewSessionManager(),
link: stream,
+1 -1
View File
@@ -95,7 +95,7 @@ type ServerWorker struct {
func NewServerWorker(ctx context.Context, d routing.Dispatcher, link *transport.Link) (*ServerWorker, error) {
worker := &ServerWorker{
dispatcher: d,
link: link,
link: &transport.Link{Reader: link.Reader, Writer: &MutexWriter{Writer: link.Writer}},
sessionManager: NewSessionManager(),
done: done.New(),
timer: time.NewTicker(60 * time.Second),
+13
View File
@@ -1,6 +1,8 @@
package mux
import (
"sync"
"github.com/xtls/xray-core/common"
"github.com/xtls/xray-core/common/buf"
"github.com/xtls/xray-core/common/net"
@@ -9,6 +11,17 @@ import (
"github.com/xtls/xray-core/common/session"
)
type MutexWriter struct {
sync.Mutex
buf.Writer
}
func (w *MutexWriter) WriteMultiBuffer(mb buf.MultiBuffer) error {
w.Lock()
defer w.Unlock()
return w.Writer.WriteMultiBuffer(mb)
}
type Writer struct {
dest net.Destination
writer buf.Writer