mirror of https://github.com/v2ray/v2ray-core
refine locker in sending worker
parent
78ef65e17b
commit
5448ec1fe4
|
@ -307,6 +307,8 @@ func (this *SendingWorker) ProcessSegment(current uint32, seg *AckSegment) {
|
|||
|
||||
func (this *SendingWorker) Push(b []byte) int {
|
||||
nBytes := 0
|
||||
this.Lock()
|
||||
defer this.Unlock()
|
||||
for len(b) > 0 && !this.queue.IsFull() {
|
||||
var size int
|
||||
if len(b) > int(this.conn.mss) {
|
||||
|
@ -316,9 +318,7 @@ func (this *SendingWorker) Push(b []byte) int {
|
|||
}
|
||||
seg := NewDataSegment()
|
||||
seg.Data = alloc.NewSmallBuffer().Clear().Append(b[:size])
|
||||
this.Lock()
|
||||
this.queue.Push(seg)
|
||||
this.Unlock()
|
||||
b = b[size:]
|
||||
nBytes += size
|
||||
}
|
||||
|
@ -331,7 +331,7 @@ func (this *SendingWorker) Write(seg Segment) {
|
|||
dataSeg.Conv = this.conn.conv
|
||||
dataSeg.SendingNext = this.firstUnacknowledged
|
||||
dataSeg.Opt = 0
|
||||
if this.conn.state == StateReadyToClose {
|
||||
if this.conn.State() == StateReadyToClose {
|
||||
dataSeg.Opt = SegmentOptionClose
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue