Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions transport/internet/splithttp/upload_queue.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package splithttp
import (
"container/heap"
"io"
"sync"

"github.com/xtls/xray-core/common/errors"
)
Expand All @@ -16,11 +17,12 @@ type Packet struct {
}

type uploadQueue struct {
pushedPackets chan Packet
heap uploadHeap
nextSeq uint64
closed bool
maxPackets int
pushedPackets chan Packet
writeCloseMutex sync.Mutex
heap uploadHeap
nextSeq uint64
closed bool
maxPackets int
}

func NewUploadQueue(maxPackets int) *uploadQueue {
Expand All @@ -34,6 +36,9 @@ func NewUploadQueue(maxPackets int) *uploadQueue {
}

func (h *uploadQueue) Push(p Packet) error {
h.writeCloseMutex.Lock()
defer h.writeCloseMutex.Unlock()

if h.closed {
return errors.New("splithttp packet queue closed")
}
Expand All @@ -43,6 +48,9 @@ func (h *uploadQueue) Push(p Packet) error {
}

func (h *uploadQueue) Close() error {
h.writeCloseMutex.Lock()
defer h.writeCloseMutex.Unlock()

h.closed = true
close(h.pushedPackets)
return nil
Expand Down