From 73295729c8c4f96071bed086a8e7d6872dc092e3 Mon Sep 17 00:00:00 2001 From: Zaid Abdulla Date: Sat, 16 Sep 2017 22:35:46 -0700 Subject: [PATCH] Fix exception when TCP connection drops abruptly --- lib/cwmp.coffee | 9 ++++----- lib/session.coffee | 11 +++-------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/lib/cwmp.coffee b/lib/cwmp.coffee index fbbf750..efd1e74 100644 --- a/lib/cwmp.coffee +++ b/lib/cwmp.coffee @@ -67,14 +67,15 @@ writeResponse = (sessionContext, res) -> res.headers['Content-Length'] = data.length sessionContext.httpResponse.writeHead(res.code, res.headers) sessionContext.httpResponse.end(data) + delete sessionContext.httpRequest + delete sessionContext.httpResponse ) else res.headers['Content-Length'] = res.data.length sessionContext.httpResponse.writeHead(res.code, res.headers) sessionContext.httpResponse.end(res.data) - - delete sessionContext.httpRequest - delete sessionContext.httpResponse + delete sessionContext.httpRequest + delete sessionContext.httpResponse recordFault = (sessionContext, fault, provisions, channels) -> @@ -608,8 +609,6 @@ onConnection = (socket) -> socket.on('close', () -> sessions = currentSessions.get(socket) for sessionId, sessionContext of sessions - delete sessionContext.httpRequest - delete sessionContext.httpResponse session.serialize(sessionContext, (err, sessionContextString) -> return throwError(err) if err # TODO don't set if process is shutting down diff --git a/lib/session.coffee b/lib/session.coffee index dc0cc20..283565f 100644 --- a/lib/session.coffee +++ b/lib/session.coffee @@ -1599,20 +1599,15 @@ serialize = (sessionContext, callback) -> deviceData.push(e) - oldDeviceData = sessionContext.deviceData - oldSyncState = sessionContext.syncState - oldToLoad = sessionContext.toLoad - + sessionContext = Object.assign({}, sessionContext) sessionContext.deviceData = deviceData delete sessionContext.syncState delete sessionContext.toLoad + delete sessionContext.httpRequest + delete sessionContext.httpResponse sessionContextString = JSON.stringify(sessionContext) - sessionContext.deviceData = oldDeviceData - sessionContext.syncState = oldSyncState - sessionContext.toLoad = oldToLoad - return callback(null, sessionContextString)