61bfb4e76247874f3d06009049a7be28318e9300
TR-069 CPEs routinely open a new TCP connection (new port) for the empty POST that follows InformResponse. ensureSessionForRemote() only did an exact remoteKey match, so hasSession() returned false and the state machine was never continued — GPN discovery was never triggered. Add IP-only fallback in ensureSessionForRemote(): when the exact remoteKey is not found, scan RUNNING machines for a unique IP match, rebind the new remoteKey, and remap sessionMachines to the new sessionId. Ambiguous cases (NAT/CGNAT with multiple active devices on same IP) return false safely.
Languages
TypeScript
86.6%
Vue
12.9%
JavaScript
0.4%