fix: prevent panic on network change during SetSelfIP

SetSelfIP unconditionally accessed t.dhcp, but t.dhcp is only
initialized when DHCP discovery is enabled. A network change event
can fire SetSelfIP regardless of the discovery configuration,
causing a nil pointer dereference.

Guard the t.dhcp access with a nil check so the self IP is still
updated on the Table even when DHCP discovery is disabled.
This commit is contained in:
Cuong Manh Le
2026-04-20 14:33:23 +07:00
committed by Cuong Manh Le
parent a767ebdaa5
commit 2742669bc1
2 changed files with 59 additions and 2 deletions
+4 -2
View File
@@ -180,8 +180,10 @@ func (t *Table) SetSelfIP(ip string) {
t.selfIPLock.Lock()
defer t.selfIPLock.Unlock()
t.selfIP = ip
t.dhcp.selfIP = t.selfIP
t.dhcp.addSelf()
if t.dhcp != nil {
t.dhcp.selfIP = t.selfIP
t.dhcp.addSelf()
}
}
// initSelfDiscover initializes necessary client metadata for self query.