Thanks Dan! It sounds very promising. 

In my case, I have a customized TLS library which basically provides a 
read/write interface. Can you shed some more light on how libcurl interact with 
TLS interface? I guess I’ll need to redefine sread/swrite. Am I right?

Fan

> On Dec 14, 2016, at 3:15 PM, Dan Fandrich <[email protected]> wrote:
> 
> On Wed, Dec 14, 2016 at 10:44:54AM -0500, Fan Zhang wrote:
>> I’m trying to use libcurl as a HTTP client in a special environment (i.e. 
>> Intel SGX for those who cares) where it can not access OS services and can 
>> only access socket via a customized shim. I haven’t dived very deep into the 
>> source code yet, but I’m wondering how hard it would be to config / refactor 
>> libcurl so that I can 1) extract only the HTTP part of it and 2) have it use 
>> customized socket APIs? Any suggestion where to start? 
> 
> libcurl should be almost able to do both without change, depending on how
> customized the socket API is. All but HTTP support can be compiled away using
> the right combination of configure flags (I run some "size-reduced HTTP only"
> autobuilds to make sure it stays working). There are various callback 
> functions
> that can be set to use some custom functions instead of standard socket ones
> (e.g. CURLOPT_OPENSOCKETFUNCTION, CURLOPT_CLOSESOCKETFUNCTION,
> CURLOPT_SOCKOPTFUNCTION). If you use the multi interface, you can supply your
> own poll function. Reading and writing to the socket will still be done using
> read/recv and write/send, so if those have to be customized you'll have to
> replace the corresponding sread/swrite macros at the source level, but that
> should be pretty easy.  And if you already have a customized SSL library and
> restrict operations to https only, you might be able to get away with no 
> source
> changes at all.
> 
>>>> Dan
> -------------------------------------------------------------------
> List admin: https://cool.haxx.se/list/listinfo/curl-library
> Etiquette:  https://curl.haxx.se/mail/etiquette.html


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

Reply via email to