1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-09-27 22:36:12 -04:00

fix kcp for not sending data immediately

This commit is contained in:
Darien Raymond 2018-02-11 02:06:43 +01:00
parent 6f4bddd62e
commit 0a6a9547a0
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169

View File

@ -338,10 +338,15 @@ func (c *Connection) waitForDataOutput() error {
// Write implements io.Writer.
func (c *Connection) Write(b []byte) (int, error) {
totalWritten := 0
updatePending := false
defer func() {
if updatePending {
c.dataUpdater.WakeUp()
}
}()
for {
dataWritten := false
totalWritten := 0
for {
if c == nil || c.State() != StateActive {
return totalWritten, io.ErrClosedPipe
@ -354,15 +359,16 @@ func (c *Connection) Write(b []byte) (int, error) {
break
}
dataWritten = true
updatePending = true
if totalWritten == len(b) {
return totalWritten, nil
}
}
if dataWritten {
if updatePending {
c.dataUpdater.WakeUp()
updatePending = false
}
if err := c.waitForDataOutput(); err != nil {
@ -375,8 +381,14 @@ func (c *Connection) Write(b []byte) (int, error) {
func (c *Connection) WriteMultiBuffer(mb buf.MultiBuffer) error {
defer mb.Release()
updatePending := false
defer func() {
if updatePending {
c.dataUpdater.WakeUp()
}
}()
for {
dataWritten := false
for {
if c == nil || c.State() != StateActive {
return io.ErrClosedPipe
@ -387,14 +399,15 @@ func (c *Connection) WriteMultiBuffer(mb buf.MultiBuffer) error {
}) {
break
}
dataWritten = true
updatePending = true
if mb.IsEmpty() {
return nil
}
}
if dataWritten {
if updatePending {
c.dataUpdater.WakeUp()
updatePending = false
}
if err := c.waitForDataOutput(); err != nil {