plugin: Prevent HTTP timeout cascading after session stop

This commit is contained in:
Lucien Greathouse
2019-10-03 17:28:34 -07:00
parent 6f1469a551
commit b2c515f2e6
2 changed files with 13 additions and 3 deletions

View File

@@ -82,11 +82,16 @@ function ApiContext.new(baseUrl)
__baseUrl = baseUrl,
__serverId = nil,
__messageCursor = -1,
__connected = true,
}
return setmetatable(self, ApiContext)
end
function ApiContext:disconnect()
self.__connected = false
end
function ApiContext:connect()
local url = ("%s/api/rojo"):format(self.__baseUrl)
@@ -132,7 +137,7 @@ function ApiContext:retrieveMessages()
local function sendRequest()
return Http.get(url)
:catch(function(err)
if err.type == Http.Error.Kind.Timeout then
if err.type == Http.Error.Kind.Timeout and self.__connected then
return sendRequest()
end

View File

@@ -109,12 +109,17 @@ function ServeSession:start()
end)
end)
:catch(function(err)
self:__setStatus(Status.Disconnected, err)
self:__stopInternal(err)
end)
end
function ServeSession:stop()
self:__setStatus(Status.Disconnected)
self:__stopInternal()
end
function ServeSession:__stopInternal(err)
self:__setStatus(Status.Disconnected, err)
self.__apiContext:disconnect()
end
function ServeSession:__setStatus(status, detail)