mirror of
https://github.com/netbirdio/netbird.git
synced 2026-08-30 19:41:30 +02:00
Capture listener locally in accept loops to avoid nil deref on Stop
This commit is contained in:
@@ -682,8 +682,14 @@ func (s *Server) Stop() error {
|
||||
|
||||
// acceptLoop handles VNC connections directly (user session mode).
|
||||
func (s *Server) acceptLoop() {
|
||||
s.mu.Lock()
|
||||
ln := s.listener
|
||||
s.mu.Unlock()
|
||||
if ln == nil {
|
||||
return
|
||||
}
|
||||
for {
|
||||
conn, err := s.listener.Accept()
|
||||
conn, err := ln.Accept()
|
||||
if err != nil {
|
||||
select {
|
||||
case <-s.ctx.Done():
|
||||
|
||||
@@ -30,8 +30,14 @@ func (s *Server) serviceAcceptLoop() {
|
||||
|
||||
log.Info("service mode, proxying connections to per-user agent over Unix socket")
|
||||
|
||||
s.mu.Lock()
|
||||
ln := s.listener
|
||||
s.mu.Unlock()
|
||||
if ln == nil {
|
||||
return
|
||||
}
|
||||
for {
|
||||
conn, err := s.listener.Accept()
|
||||
conn, err := ln.Accept()
|
||||
if err != nil {
|
||||
select {
|
||||
case <-s.ctx.Done():
|
||||
|
||||
@@ -248,8 +248,15 @@ func (s *Server) serviceAcceptLoop() {
|
||||
|
||||
log.Info("service mode, proxying connections to agent over Unix socket")
|
||||
|
||||
s.mu.Lock()
|
||||
ln := s.listener
|
||||
s.mu.Unlock()
|
||||
if ln == nil {
|
||||
sm.Stop()
|
||||
return
|
||||
}
|
||||
for {
|
||||
conn, err := s.listener.Accept()
|
||||
conn, err := ln.Accept()
|
||||
if err != nil {
|
||||
select {
|
||||
case <-s.ctx.Done():
|
||||
|
||||
Reference in New Issue
Block a user