forked from rojo-rbx/rojo
plugin: Prevent HTTP timeout cascading after session stop
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user