mirror of
https://github.com/yggdrasil-network/yggdrasil-go.git
synced 2025-04-28 22:25:07 +03:00
fix actor EnqueueFrom stack overflow (use nil now to send from self) and replace session send/recv workers with actor functions
This commit is contained in:
parent
436c84ca33
commit
533da351f9
7 changed files with 132 additions and 17 deletions
|
@ -162,7 +162,7 @@ func (c *Conn) ReadNoCopy() ([]byte, error) {
|
|||
} else {
|
||||
return nil, ConnError{errors.New("session closed"), false, false, true, 0}
|
||||
}
|
||||
case bs := <-c.session.recv:
|
||||
case bs := <-c.session.toConn:
|
||||
return bs, nil
|
||||
}
|
||||
}
|
||||
|
@ -221,7 +221,7 @@ func (c *Conn) WriteNoCopy(msg FlowKeyMessage) error {
|
|||
} else {
|
||||
err = ConnError{errors.New("session closed"), false, false, true, 0}
|
||||
}
|
||||
case c.session.send <- msg:
|
||||
case <-c.session.SyncExec(func() { c.session._send(msg) }):
|
||||
}
|
||||
}
|
||||
return err
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue