Opened 15 years ago
#77 new defect
Collect nnrpd idle timer stat with a TLS connection
Reported by: | Julien ÉLIE | Owned by: | eagle |
---|---|---|---|
Priority: | low | Milestone: | |
Component: | nnrpd | Version: | 2.4.4 |
Severity: | minor | Keywords: | |
Cc: |
Description
According to Kachun Lee:
http://groups.google.fr/group/news.software.nntp/browse_frm/thread/53f4043e2bc0da8f/61a1e2379a04489e
"It seems that the SSL_read cannot be mixed with select() as in the current code. SSL communicates in its own data blocks and hand shaking. The do_readline using SSL_read could return, but still with a partial line in the SSL_read buffer. Then the server SSL routine would sit there waiting for completion of that data block while nnrpd sat at the select() routine waiting for more data from the server.
Here, we decide to just bypass the select() wait. Unlike innd with multiple threads, the select on nnrpd is just waiting on a single file descriptor, so it is not really essential with blocked read like SSL_read. Using an alarm signal around SSL_read for non active timeout, SSL works without dead locks. However, without the select() wait, the IDLE timer stat won't be collected..."