mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 10:08:18 +00:00
Check if HTTP request task is aborted in completion callback
It's possible for the HTTP request task to be aborted after the curl request has finished, so the returned `State` will be `HTTP_DONE` but `m_Abort` is `true`. The `State` never changes to `HTTP_ABORTED`, because the progress callback is not called after the HTTP request has completed. This causes the client to crash when a skin download is aborted after the HTTP request finished but before the completion callback is called. This is fixed by checking if `m_Abort` is `true` and setting the `State` to `HTTP_ABORTED` at the beginning of the completion callback. Closes #3567.
This commit is contained in:
parent
6808b62b74
commit
ddb21ec49e
|
@ -359,6 +359,9 @@ int CHttpRequest::ProgressCallback(void *pUser, double DlTotal, double DlCurr, d
|
||||||
|
|
||||||
int CHttpRequest::OnCompletion(int State)
|
int CHttpRequest::OnCompletion(int State)
|
||||||
{
|
{
|
||||||
|
if(m_Abort)
|
||||||
|
State = HTTP_ABORTED;
|
||||||
|
|
||||||
if(m_WriteToFile)
|
if(m_WriteToFile)
|
||||||
{
|
{
|
||||||
if(m_File && io_close(m_File) != 0)
|
if(m_File && io_close(m_File) != 0)
|
||||||
|
|
Loading…
Reference in a new issue