diff mbox

[pacman-dev] alpm: Fix SIGINT handling re: aborting download

Message ID 20181009162905.27424-1-jjk@jjacky.com
State Superseded, archived
Delegated to: Andrew Gregory
Headers show

Commit Message

Olivier Brunel Oct. 9, 2018, 4:29 p.m. UTC
Upon receiving SIGINT a flag is set to abort the (curl) download.
However, since it was never reset/initialized, if a front-end doesn't
actually exit on SIGINT, and later tries any operation that needs to
perform a new download, said download would always get aborted right
away due to the flag not having been reset.

Signed-off-by: Olivier Brunel <jjk@jjacky.com>
---
 lib/libalpm/dload.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Andrew Gregory Oct. 17, 2018, 9:15 a.m. UTC | #1
On 10/09/18 at 06:29pm, Olivier Brunel wrote:
> Upon receiving SIGINT a flag is set to abort the (curl) download.
> However, since it was never reset/initialized, if a front-end doesn't
> actually exit on SIGINT, and later tries any operation that needs to
> perform a new download, said download would always get aborted right
> away due to the flag not having been reset.
> 
> Signed-off-by: Olivier Brunel <jjk@jjacky.com>
> ---
>  lib/libalpm/dload.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c
> index cca39470..0a3293cf 100644
> --- a/lib/libalpm/dload.c
> +++ b/lib/libalpm/dload.c
> @@ -253,6 +253,7 @@ static void curl_set_handle_opts(struct dload_payload *payload,
>  	const char *useragent = getenv("HTTP_USER_AGENT");
>  	struct stat st;
>  
> +	dload_interrupted = 0;

I think set_handle_opts is the wrong place to reset it since it is in
fact not a handle option.  Let's put it right before the signal
handlers are registered to keep signal-related things together.

>  	/* the curl_easy handle is initialized with the alpm handle, so we only need
>  	 * to reset the handle's parameters for each time it's used. */
>  	curl_easy_reset(curl);
> -- 
> 2.19.0
diff mbox

Patch

diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c
index cca39470..0a3293cf 100644
--- a/lib/libalpm/dload.c
+++ b/lib/libalpm/dload.c
@@ -253,6 +253,7 @@  static void curl_set_handle_opts(struct dload_payload *payload,
 	const char *useragent = getenv("HTTP_USER_AGENT");
 	struct stat st;
 
+	dload_interrupted = 0;
 	/* the curl_easy handle is initialized with the alpm handle, so we only need
 	 * to reset the handle's parameters for each time it's used. */
 	curl_easy_reset(curl);