Buy commercial curl support from WolfSSL. We help you work
out your issues, debug your libcurl applications, use the API, port to new
platforms, add new features and more. With a team lead by the curl founder
himself.
RE: [EXTERNAL] Re: Feature request: provide ability to set a global callback function telling libcurl if IPv6 works on the system
- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]
From: Dmitry Karpov via curl-library <curl-library_at_lists.haxx.se>
Date: Thu, 22 Sep 2022 00:24:57 +0000
> My point is that adding a callback doesn't fix anything on its own. An application would need to add a function to be called back, and so far, your application is the only one that would currently use it. I suspect there > is a better way to solve this issue. For example, you didn't answer this question from my last message:
> If Curl_ipv6works() were not called in the CURL_IPRESOLVE_V6 case, would
> that solve the issues that are remaining?
Your question was:
"So, if libcurl eliminated that call in the CURL_IPRESOLVE_V4 case, would it fix your problem?"
And I answered that question:
" Daniel's PR fixed the issue only for CURL_IPRESOLVE_V4, but not for CURL_IPRESOLVE_WHATEVER and CURL_IPRESOLVE_IPV6."
So, my problems will NOT be fixed if libcurl eliminated the If Curl_ipv6works() call in the CURL_IPRESOLVE_V4 case.
The problems remain for CURL_IPRESOLVE_WHATEVER and CURL_IPRESOLVE_IPV6 modes.
YES, adding a callback doesn't fix anything on its own. But it allows curl applications to work around problems/regressions caused by default Curl_ipv6works() behavior.
Maybe, there is a better way to fix this issue, but I don't think it is possible to provide the "IP6 works" function which works for ALL possible cases - thus there is a need for customization.
For instance, curl application may implement the "IPv6 works" callback based on some atomic variable, which is a magnitude faster than the socket system call done in the Curl_ipv6works().
And libcurl provides memory callbacks in a similar fashion, which can optimize memory allocations for some applications.
I guess whoever proposed memory callbacks also faced arguments like "your application is the only one that would currently use it.", which can be said about any new feature. 😊
Thanks,
Dmitry Karpov
-----Original Message-----
From: curl-library <curl-library-bounces_at_lists.haxx.se> On Behalf Of Dan Fandrich via curl-library
Sent: Wednesday, September 21, 2022 3:59 PM
To: libcurl development <curl-library_at_lists.haxx.se>
Cc: Dan Fandrich <dan_at_coneharvesters.com>
Subject: Re: [EXTERNAL] Re: Feature request: provide ability to set a global callback function telling libcurl if IPv6 works on the system
On Wed, Sep 21, 2022 at 10:46:45PM +0000, Dmitry Karpov via curl-library wrote:
> I think that my proposal will provide useful customization for dual-stack curl applications, and I am not sure that I fully understand your objections like " It might in your situation, but it wouldn't in everybody else's.".
My point is that adding a callback doesn't fix anything on its own. An application would need to add a function to be called back, and so far, your application is the only one that would currently use it. I suspect there is a better way to solve this issue. For example, you didn't answer this question from my last message:
If Curl_ipv6works() were not called in the CURL_IPRESOLVE_V6 case, would
that solve the issues that are remaining?
Since you're calling it a regression, then where did that regression occur? Was it in libcurl or in the kernel? Maybe this problem needs to be solved elsewhere.
Dan
--
Unsubscribe: https://lists.haxx.se/listinfo/curl-library
Etiquette: https://curl.se/mail/etiquette.html
Date: Thu, 22 Sep 2022 00:24:57 +0000
> My point is that adding a callback doesn't fix anything on its own. An application would need to add a function to be called back, and so far, your application is the only one that would currently use it. I suspect there > is a better way to solve this issue. For example, you didn't answer this question from my last message:
> If Curl_ipv6works() were not called in the CURL_IPRESOLVE_V6 case, would
> that solve the issues that are remaining?
Your question was:
"So, if libcurl eliminated that call in the CURL_IPRESOLVE_V4 case, would it fix your problem?"
And I answered that question:
" Daniel's PR fixed the issue only for CURL_IPRESOLVE_V4, but not for CURL_IPRESOLVE_WHATEVER and CURL_IPRESOLVE_IPV6."
So, my problems will NOT be fixed if libcurl eliminated the If Curl_ipv6works() call in the CURL_IPRESOLVE_V4 case.
The problems remain for CURL_IPRESOLVE_WHATEVER and CURL_IPRESOLVE_IPV6 modes.
YES, adding a callback doesn't fix anything on its own. But it allows curl applications to work around problems/regressions caused by default Curl_ipv6works() behavior.
Maybe, there is a better way to fix this issue, but I don't think it is possible to provide the "IP6 works" function which works for ALL possible cases - thus there is a need for customization.
For instance, curl application may implement the "IPv6 works" callback based on some atomic variable, which is a magnitude faster than the socket system call done in the Curl_ipv6works().
And libcurl provides memory callbacks in a similar fashion, which can optimize memory allocations for some applications.
I guess whoever proposed memory callbacks also faced arguments like "your application is the only one that would currently use it.", which can be said about any new feature. 😊
Thanks,
Dmitry Karpov
-----Original Message-----
From: curl-library <curl-library-bounces_at_lists.haxx.se> On Behalf Of Dan Fandrich via curl-library
Sent: Wednesday, September 21, 2022 3:59 PM
To: libcurl development <curl-library_at_lists.haxx.se>
Cc: Dan Fandrich <dan_at_coneharvesters.com>
Subject: Re: [EXTERNAL] Re: Feature request: provide ability to set a global callback function telling libcurl if IPv6 works on the system
On Wed, Sep 21, 2022 at 10:46:45PM +0000, Dmitry Karpov via curl-library wrote:
> I think that my proposal will provide useful customization for dual-stack curl applications, and I am not sure that I fully understand your objections like " It might in your situation, but it wouldn't in everybody else's.".
My point is that adding a callback doesn't fix anything on its own. An application would need to add a function to be called back, and so far, your application is the only one that would currently use it. I suspect there is a better way to solve this issue. For example, you didn't answer this question from my last message:
If Curl_ipv6works() were not called in the CURL_IPRESOLVE_V6 case, would
that solve the issues that are remaining?
Since you're calling it a regression, then where did that regression occur? Was it in libcurl or in the kernel? Maybe this problem needs to be solved elsewhere.
Dan
--
Unsubscribe: https://lists.haxx.se/listinfo/curl-library
Etiquette: https://curl.se/mail/etiquette.html
-- Unsubscribe: https://lists.haxx.se/listinfo/curl-library Etiquette: https://curl.se/mail/etiquette.htmlReceived on 2022-09-22