From 63cd8dd2ded79bef2a2220846370e6e1ca4c7b84 Mon Sep 17 00:00:00 2001 From: Zaid Abdulla Date: Tue, 8 Dec 2020 00:27:29 -0800 Subject: [PATCH] Save fault when session terminates unsuccessfully --- lib/cwmp.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/cwmp.ts b/lib/cwmp.ts index 154329a..c7f583c 100644 --- a/lib/cwmp.ts +++ b/lib/cwmp.ts @@ -198,6 +198,7 @@ async function writeResponse( }); await endSession(sessionContext); } else if (close) { + session.clearProvisions(sessionContext); await endSession(sessionContext); } else { const now = Date.now(); @@ -734,6 +735,17 @@ async function nextRpc(sessionContext: SessionContext): Promise { async function endSession(sessionContext: SessionContext): Promise { let saveCache = sessionContext.cacheUntil != null; + if (sessionContext.provisions.length) { + const fault = { + code: "session_terminated", + message: "The TR-069 session was unsuccessfully terminated", + timestamp: sessionContext.timestamp, + }; + recordFault(sessionContext, fault); + // No need to save retryNow + for (const f of Object.values(sessionContext.faults)) delete f.retryNow; + } + const promises = []; promises.push( @@ -892,11 +904,11 @@ export function onConnection(socket: Socket): void { const now = Date.now(); const lastActivity = sessionContext.lastActivity; - const timeoutMsg = logger.flatten({ + const timeoutMsg = { sessionContext: sessionContext, message: "Session timeout", sessionTimestamp: sessionContext.timestamp, - }); + }; const timeout = sessionContext.lastActivity + sessionContext.timeout * 1000 - now; @@ -916,7 +928,7 @@ export function onConnection(socket: Socket): void { const _sessionContext = await session.deserialize(sessionContextString); if (_sessionContext.lastActivity === lastActivity) { logger.accessError(timeoutMsg); - await endSession(_sessionContext); + await endSession(sessionContext); } }, timeout + 1000).unref();