Re: [PATCH 09/15] service: Leverage 'service_set_proxy_method'.

Denis Kenzior <[email protected]>
Newsgroups dev.linux.lists.connman
Message-ID <[email protected]>
Hi Grant,

On 2/21/25 9:56 AM, Grant Erickson wrote:
> Leverage 'service_set_proxy_method' for
> '__connman_service_set_proxy_autoconfig', the second of two call
> sites.
> ---
>   src/service.c | 49 ++++++++++++++++++++++++++++++++-----------------
>   1 file changed, 32 insertions(+), 17 deletions(-)
> 
> diff --git a/src/service.c b/src/service.c
> index 5c94c2962de8..d2d8e7cea065 100644
> --- a/src/service.c
> +++ b/src/service.c
> @@ -5662,32 +5662,47 @@ const char *connman_service_get_proxy_url(const struct connman_service *service)
>   	return service->pac;
>   }
>   
> -void __connman_service_set_proxy_autoconfig(struct connman_service *service,
> -							const char *url)
> +static bool service_set_proxy_method_auto_handler(
> +				struct connman_service *service,
> +				enum connman_service_proxy_method method,
> +				const void *context)
>   {
> -	const bool dochanged = true;
> -
> -	if (!service || service->hidden)
> -		return;
> -
> -	service_set_pac(service, url, !dochanged);
> -
> -	service->proxy = CONNMAN_SERVICE_PROXY_METHOD_AUTO;
> +	const char * const url = context;
>   
>   	if (service->ipconfig_ipv4) {
>   		if (__connman_ipconfig_set_proxy_autoconfig(
> -			    service->ipconfig_ipv4, url) < 0)
> -			return;
> +				service->ipconfig_ipv4, url) < 0)
> +			return false;
>   	} else if (service->ipconfig_ipv6) {
>   		if (__connman_ipconfig_set_proxy_autoconfig(
> -			    service->ipconfig_ipv6, url) < 0)
> -			return;
> +				service->ipconfig_ipv6, url) < 0)
> +			return false;
>   	} else
> -		return;
> +		return false;
>   
> -	proxy_changed(service);
> +	return true;
> +}
> +
> +void __connman_service_set_proxy_autoconfig(struct connman_service *service,
> +							const char *url)
> +{
> +	const bool dochanged = true;
> +	const bool donotifier = true;
> +	const void *context = url;

Why are these needed?

>   
> -	__connman_notifier_proxy_changed(service);
> +	DBG("service %p (%s) url %p (%s)",
> +		service,
> +		connman_service_get_identifier(service),
> +		url,
> +		url ? url : "<null>");
> +
> +	service_set_pac(service, url, !dochanged);
> +
> +	service_set_proxy_method(service,
> +		CONNMAN_SERVICE_PROXY_METHOD_AUTO,
> +		donotifier,
> +		service_set_proxy_method_auto_handler,
> +		context);

Conversion from any pointer type to void * is automatic in C; using 'url' would 
be just fine here?

>   }
>   
>   const char *connman_service_get_proxy_autoconfig(struct connman_service *service)

Regards,
-Denis
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.