From 86d48207605bea3e2c72bf3734666999dfef14d8 Mon Sep 17 00:00:00 2001 From: Sven Barth Date: Mon, 6 Sep 2021 22:37:07 +0200 Subject: [PATCH] + implement support for terminating a HTTPSys web service handler that's blocking inside WaitForRequest --- packages/fcl-web/src/base/custhttpsys.pp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/fcl-web/src/base/custhttpsys.pp b/packages/fcl-web/src/base/custhttpsys.pp index 425165cb27..a546709166 100644 --- a/packages/fcl-web/src/base/custhttpsys.pp +++ b/packages/fcl-web/src/base/custhttpsys.pp @@ -653,7 +653,9 @@ begin fBuffer := GetMem(fBufferSize); end; until res <> ERROR_MORE_DATA; - if res <> NO_ERROR then + if res = ERROR_OPERATION_ABORTED then + Break + else if res <> NO_ERROR then DoError(SErrReceiveRequest, [res]) else begin ProcessRequest(fBuffer, readsize, aRequest, aResponse); @@ -688,6 +690,10 @@ end; procedure THTTPSysHandler.Terminate; begin + if fHandle <> INVALID_HANDLE_VALUE then begin + HttpCloseRequestQueue(fHandle); + fHandle := INVALID_HANDLE_VALUE; + end; inherited Terminate; end;