cURL / Mailing Lists / curl-library / Single Mail


Re[2]: Working with curl connections as with sockets.

From: Tetetest <>
Date: Tue, 29 Apr 2008 21:35:24 +0400

Hello Tor,

Tuesday, April 29, 2008, 7:37:59 PM, you wrote:

TA> 'void' is good, agreed.

So, 'void*' for curl_easy_recv(), and 'const void*' for
curl_easy_send(), right? :)

>> No const poisoning all over the place, and respective compiler warnings.
>> Not introduction of signed vs unsigned char issues, and respective
>> compiler warnings.
>> Not force the user buffer to be sent to be of any particular type, its
>> just a chunk of memory and it can very well be dereferenced with a
>> void pointer.

TA> But if that user buffer happens to be a read-only buffer then GCC will generate
TA> "warning: passing argument 1 of 'msend' discards qualifiers from
TA> pointer target type"

Similar warning is issued by compiler from Microsoft Visual Studio
2008: 'function': different 'const' qualifiers.

>> No need to 'fix' what is not broken.

TA> It could be argued that the low-level functions (from Curl_write down)
TA> are currently semi-broken, and pushes the problem upwards. A function
TA> with prototype '<type> * name' tells the user that it must be able to
TA> write to that area which 'name' points to. Which isn't the case, for
TA> the write functions.

I would also add that 'const' modifier allows compiler to employ more
optimizations (at least theoretically so).

Thus, it looks feasible to add 'const' to *_write - functions in some
distant perspective.

Best regards,
Received on 2008-04-29