Fix exception when TCP connection drops abruptly

This commit is contained in:
Zaid Abdulla committed 2017-09-16 22:35:46 -07:00
1 parent ed3239e4db
commit 73295729c8
2 files changed
+5 -11

No files matched your search

+2 -3
View File
@@ -67,12 +67,13 @@ writeResponse = (sessionContext, res) ->
res.headers['Content-Length'] = data.length res.headers['Content-Length'] = data.length
sessionContext.httpResponse.writeHead(res.code, res.headers) sessionContext.httpResponse.writeHead(res.code, res.headers)
sessionContext.httpResponse.end(data) sessionContext.httpResponse.end(data)
delete sessionContext.httpRequest
delete sessionContext.httpResponse
) )
else else
res.headers['Content-Length'] = res.data.length res.headers['Content-Length'] = res.data.length
sessionContext.httpResponse.writeHead(res.code, res.headers) sessionContext.httpResponse.writeHead(res.code, res.headers)
sessionContext.httpResponse.end(res.data) sessionContext.httpResponse.end(res.data)
delete sessionContext.httpRequest delete sessionContext.httpRequest
delete sessionContext.httpResponse delete sessionContext.httpResponse
@@ -608,8 +609,6 @@ onConnection = (socket) ->
socket.on('close', () -> socket.on('close', () ->
sessions = currentSessions.get(socket) sessions = currentSessions.get(socket)
for sessionId, sessionContext of sessions for sessionId, sessionContext of sessions
delete sessionContext.httpRequest
delete sessionContext.httpResponse
session.serialize(sessionContext, (err, sessionContextString) -> session.serialize(sessionContext, (err, sessionContextString) ->
return throwError(err) if err return throwError(err) if err
# TODO don't set if process is shutting down # TODO don't set if process is shutting down
+3 -8
View File
@@ -1599,20 +1599,15 @@ serialize = (sessionContext, callback) ->
deviceData.push(e) deviceData.push(e)
oldDeviceData = sessionContext.deviceData sessionContext = Object.assign({}, sessionContext)
oldSyncState = sessionContext.syncState
oldToLoad = sessionContext.toLoad
sessionContext.deviceData = deviceData sessionContext.deviceData = deviceData
delete sessionContext.syncState delete sessionContext.syncState
delete sessionContext.toLoad delete sessionContext.toLoad
delete sessionContext.httpRequest
delete sessionContext.httpResponse
sessionContextString = JSON.stringify(sessionContext) sessionContextString = JSON.stringify(sessionContext)
sessionContext.deviceData = oldDeviceData
sessionContext.syncState = oldSyncState
sessionContext.toLoad = oldToLoad
return callback(null, sessionContextString) return callback(null, sessionContextString)