I apologize if some or all of this is covered elsewhere - I *did* take a browse 
through the last 
few months of list archives to see if I could see anything, but nothing jumped 
out.

First, a little context: I am in the process of developing support for the 
infinitely accursed 
"OAUTH2" authentication framework, specifically as it is used by GMail. I'm not 
going to 
waste everyone's time by ranting about OAUTH2 - suffice it to say that as part 
of the maze of 
steps required to make it work, I need some reliable HTTP client code. While I 
could write my 
own HTTP/HTTPS handlers, it seemed more logical to use a solid, proven tool 
like libCurl 
instead.

I have run into three issues with LibCurl as it exists in the Windows 
environment, most of 
them to do with linkage. I'm hoping to get some insight into how best to deal 
with them.

1:  Linking to dynamic RTLs. I've read the stuff in WinBuild about CRT linkage, 
but while I 
can understand why the decision might have been made to go with linking to the 
DLL RTL 
libraries, it's a problem for me. My program (Pegasus Mail) is pretty much a 
niche product 
these days, but it's used on practically every version of Windows that still 
runs. I've always 
static-linked to RTLs to avoid having to include MS redistributables in my 
installers: given that 
some of the redistributable packages are larger than my entire program, they 
constitute 
"bloat" on a level I find uncomfortable. Having to use a version of LibCurl 
that requires 
redistributables which will more than double the size of my distribution, all 
so I can do one 
badly-designed authentication protocol that's been shoved down our collective 
throats by 
people who should have been able to do better... Well, let's just say I've got 
problems with 
that idea.

My inclination, then, is to build a version of LibCurl that uses the 
RTLIBCFG=static option, but 
this seems to be deprecated so heavily in WinBuild.txt that have to ask: is it 
really as 
untested and unreliable as WinBuild.txt seems to suggest? In a practical sense, 
am I really 
going to run into problems with this, or is the warning merely a case of 
excessive caution?

2: If I end up building static LibCurl, what libraries do I absolutely *have* 
to include for 
reasonable levels of operation? I already produce my own OpenSSL builds (for 
many of the 
same reasons I'm describing here - /MD linkage just won't work for me), but do 
I need things 
like NGHTTP2, C-ARES or ZLIB for basic HTTP operation? I don't imagine that 
those 
libraries will be any easier to build for Windows, so if this is going to turn 
into a major 
production exercise, it may end up being better for me to write my own simple 
HTTP code 
instead, given how limited my need is. This isn't intended to sound arrogant - 
I've written 
HTTP servers and both servers and clients for almost every mail protocol 
there's ever been, 
and I have very extensive TCP/IP code libraries, so I believe that simple HTTP 
client code 
should be manageable - but I'd sooner use LibCurl if I can, simply because it 
has such 
impeccable pedigree and because it offers real scope for growth.

3: What MS redistributable does the 7.71.1 build of LibCurl I downloaded from 
https://curl.haxx.se/windows/ require? Is the redistributable available 
anywhere on the site (I 
have access to Visual C 9, 14 and 19)?

Please don't think I'm being negative - I would love to have Curl/LibCurl in my 
arsenal of 
tools, and once I had it working, I'm sure I would find more and more uses for 
it. I admire the 
authors, and love the richness - it's just the little niggles I have to sort 
out so I can work out 
how neat a fit it is for my purposes.

Thanks in advance for any advice or opinions.

Cheers!

-- David --

-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:   https://curl.haxx.se/mail/etiquette.html

Reply via email to