5
0
mirror of https://github.com/cwinfo/yggdrasil-go.git synced 2024-11-13 01:40:27 +00:00

fix dial bug

This commit is contained in:
Arceliar 2019-08-26 00:38:14 -05:00
parent ab59129557
commit c97dd4ad28
2 changed files with 21 additions and 19 deletions

View File

@ -247,13 +247,15 @@ func (tun *TunAdapter) _handlePacket(recvd []byte, err error) {
} }
if !known { if !known {
go func() { go func() {
if conn, err := tun.dialer.DialByNodeIDandMask(dstNodeID, dstNodeIDMask); err == nil { conn, err := tun.dialer.DialByNodeIDandMask(dstNodeID, dstNodeIDMask)
tun.RecvFrom(nil, func() { tun.RecvFrom(nil, func() {
// We've been given a connection so prepare the session wrapper
packets := tun.dials[*dstNodeID] packets := tun.dials[*dstNodeID]
delete(tun.dials, *dstNodeID) delete(tun.dials, *dstNodeID)
if err != nil {
return
}
// We've been given a connection so prepare the session wrapper
var tc *tunConn var tc *tunConn
var err error
if tc, err = tun._wrap(conn); err != nil { if tc, err = tun._wrap(conn); err != nil {
// Something went wrong when storing the connection, typically that // Something went wrong when storing the connection, typically that
// something already exists for this address or subnet // something already exists for this address or subnet
@ -264,7 +266,7 @@ func (tun *TunAdapter) _handlePacket(recvd []byte, err error) {
tc.writeFrom(nil, packet) tc.writeFrom(nil, packet)
} }
}) })
} return
}() }()
} }
} }

View File

@ -252,7 +252,7 @@ const (
// notify the intf that we're currently sending // notify the intf that we're currently sending
func (intf *linkInterface) notifySending(size int, isLinkTraffic bool) { func (intf *linkInterface) notifySending(size int, isLinkTraffic bool) {
intf.RecvFrom(nil, func() { intf.RecvFrom(nil, func() {
if !isLinkTraffic && size > 0 { if !isLinkTraffic {
intf.inSwitch = false intf.inSwitch = false
} }
intf.sendTimer = time.AfterFunc(sendBlockedTime, intf.notifyBlockedSend) intf.sendTimer = time.AfterFunc(sendBlockedTime, intf.notifyBlockedSend)