test reading fail when use https

wandenberg nginx-forum at nginx.us
Sun Jun 26 17:28:29 MSD 2011


Hello!

Thanks for your explanation.
Now I understood, sorry for my mistakes.


Maxim Dounin Wrote:
-------------------------------------------------------
> Hello!
> 
> On Sat, Jun 25, 2011 at 04:06:30PM -0400,
> wandenberg wrote:
> 
> > Sorry Maxim. I didn't understood your answer.
> 
> You can't use c->recv() as it doesn't allow to
> peek.  Using 
> c->recv() will result in possibly valid and
> required data to be 
> lost.  And that's why normal recv() is used
> instead there.
> 

I turned back to use normal recv() respecting msg_peek functionality.

> > Can you explain better? Why this work for detect
> when users goes off on
> > http, but not in https ?
> 
> Quoting just 2 days old message from the same
> list[1]:
> 
> % Yes, the code in question won't be able to
> detect SSL connection 
> % close with appropriate shutdown records sent by
> a client (as well 
> % as connection close with some other pending
> data, e.g. pipelined 
> % request).  It is not possible to detect
> connection close with 
> % standard socket interface if there are pending
> data without 
> % reading that data first, which isn't always
> desired/possible.
> % 
> % In the particular case of SSL it should be
> possible to use 
> % SSL_peek() here, but better aproach is to use
> OS-provided hint, 
> % e.g. as EV_EOF provided by kqueue interface (and
> used by nginx).
> 
> [1]
> http://nginx.org/pipermail/nginx/2011-June/027672.
> html

To solve the problem of detect when users close connection on https I
did this implementation

#if (NGX_HTTP_SSL)
    if (c->ssl == NULL) {
	    n = recv(c->fd, buf, 1, MSG_PEEK);
    } else {
	    n = SSL_peek(c->ssl->connection, buf, 1);
    }
#else
    n = recv(c->fd, buf, 1, MSG_PEEK);
#endif

I would like to know if you see any other problem on that and if is
possible to this code be applied on nginx source?

> 
> Maxim Dounin
> 
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://nginx.org/mailman/listinfo/nginx


Thanks for your quickly response.

Regards,
Wandenberg

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,209967,210178#msg-210178




More information about the nginx mailing list