[Ur] Patch for Basis.clientIP
Adam Chlipala
adamc at csail.mit.edu
Sun Nov 16 13:44:05 EST 2014
On 09/23/2014 04:08 PM, Sergey Mironov wrote:
> Basis.clientIP function is really a nonsense for non-http backends.
> And yes, non-http backends may lack access to the client's IP address
> at all (I may imagine there may be an apache plugin for setting HTTP
> header containing this information). From the other hand, it is sad
> that programmer can't touch transport level even by using methods
> labeled 'unsafe'. I would have written an FFI-module If I only could
> access the socket to pass to [getpeername]. Here is another possible
> scenario I am thinking about: we may store backend-specific file
> handle into uw_context (maybe under [void*] type for safety) and
> provide users with a C function like [int uw_handle(uw_context *ctx)]
> returning this handle. This would make it possible to move the
> responsibility to FFIs and allow me to write one to do the job. Basis
> API will stay unchanged this way. What do you think?
Apologies for the long delay (blah blah, research-paper deadlines, blah
blah), but I believe I've now implemented the very simple change that
you suggested. It makes sense to me as a good way of addressing the issue.
The one essential difference in my version is that I did decide to keep
the type of this mysterious data as 'int' instead of 'void*'.
Also, since the function name you suggested was already taken, here's
the one to be calling to get the socket (if any) for a context:
int uw_remoteSock(uw_context);
It returns -1 when no socket has been set.
More information about the Ur
mailing list