On Mon, 9 Jul 2018, Bernardo Pastorelli wrote:
Looking at the source code it appears that libcurl retrains full control on
the read and write operations to the socket. Am I missing any alternative
that would allow me to gain control of the read and write operations to the
socket so that I can add the control bytes required by my multiplexing
implementation?
libcurl doesn't offer that feature, no.
In case I would try to develop a patch that would allow supporting my
scenario, which would be the best way to implement it? I was thinking about
the capability of registering callbacks for the socket recv and send
operations, as it is currently possible for socket open, close and sockopt.
The limitation of this approach would be that it would work just for some
protocols: for example https delegates the read and write to the socket to
the ssl library (for example openssl) or the ldap protocol uses the ldap
functions. Anyhow it would work for the plain http protocol. Any other
alternative?
In a world where HTTP is gradually going away for the benefit of HTTPS, I
would be against adding a feature like this that doesn't work with HTTPS.
Most, if not all, TLS libraries these days support creating the data to send
in a buffer instead of using the socket directly. Supporting HTTPS is of
course a lot more work.
But the send and recv functions might be the easy parts to fix.
Functionality wise, if you replace recv. How can libcurl tell when there's
data to read from the socket that isn't a socket? Or when the socket that
isn't a socket is ready to get data sent to it? Those are rather fundamental
parts of the library and they too are currently using the socket API functions
directly now.
Don't you need pretty much all socket-API functions libcurl use to be
callbacks too for this to work?
--
/ daniel.haxx.se
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: https://curl.haxx.se/mail/etiquette.html