File tree 1 file changed +8
-4
lines changed
1 file changed +8
-4
lines changed Original file line number Diff line number Diff line change @@ -332,6 +332,7 @@ func (bind *StdNetBind) Close() error {
332
332
func (s * StdNetBind ) makeReceiveFn (uc net.PacketConn ) conn.ReceiveFunc {
333
333
// github.com/WireGuard/wireguard-go/blob/469159ecf/device/device.go#L531
334
334
return func (bufs [][]byte , sizes []int , eps []conn.Endpoint ) (n int , err error ) {
335
+ defer core .Recover (core .Exit11 , "wgconn.recv." + s .id )
335
336
defer func () {
336
337
s .observer ("r" , err )
337
338
}()
@@ -373,6 +374,7 @@ func timedout(err error) bool {
373
374
}
374
375
375
376
func (s * StdNetBind ) Send (buf [][]byte , peer conn.Endpoint ) (err error ) {
377
+ defer core .Recover (core .Exit11 , "wgconn.send." + s .id )
376
378
defer func () {
377
379
s .observer ("w" , err )
378
380
}()
@@ -547,18 +549,20 @@ func (s *StdNetBind) asEndpoint(ap net.Addr) conn.Endpoint {
547
549
return invalidStdNetEndpoint
548
550
}
549
551
s .epmu .RLock ()
550
- if ep , ok := s .eps [ap ]; ok {
552
+ ep , ok := s .eps [ap ]
553
+ s .epmu .RUnlock ()
554
+
555
+ if ok {
551
556
return ep
552
557
}
553
- s .epmu .RUnlock ()
554
558
555
559
s .epmu .Lock ()
556
560
defer s .epmu .Unlock ()
557
- if ep , ok := s .eps [ap ]; ok {
561
+ ep , ok = s .eps [ap ]
562
+ if ok {
558
563
return ep
559
564
}
560
565
561
- var ep StdNetEndpoint
562
566
if tcp , ok := ap .(* net.TCPAddr ); ok {
563
567
ipp := tcp .AddrPort ()
564
568
ep = StdNetEndpoint {ipp , udpaddr (ipp )}
You can’t perform that action at this time.
0 commit comments