New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix issue #103 for output_string, output_char and input_int #116
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this looks reasonable, but I wonder: should the exceptions we throw be more well defined? e.g. if I want to match on output_string
failing, should I catch | Failure ...
?
Normally this exception should never be raised: writing/reading 0 bytes is not in principle possible without reporting an error from the lower level functions. We could replace by I added the exception to make sure a loop is not possible. |
Thanks, I made a few tweaks to the error messages and added a changes entry. |
CHANGES: - Raise an error when `Ssl.flush` isn't successful (savonet/ocaml-ssl#104, savonet/ocaml-ssl#120) - Add an API-compatible `Ssl.Runtime_lock` module. The functions in this module don't release the OCaml runtime lock. While they don't allow other OCaml threads to run concurrently, they don't perform any copying in the underlying data, leading certain workloads to be faster than their counterparts that release the lock. (savonet/ocaml-ssl#106) - Guarantee `Ssl.output_string` writes the whole string by retrying the operation with unwritten bytes (savonet/ocaml-ssl#103, savonet/ocaml-ssl#116) - Fix calls in C stubs that need to call `ERR_clear_error` before the underlying OpenSSL call (savonet/ocaml-ssl#118) - Add a module `Ssl.Error` to retrieve OpenSSL errors in a structured way (savonet/ocaml-ssl#119) - Deprecate Ssl.{SSLv23,SSLv3,TLSv1,TLSv1_1}, which were were formally deprecated in March 2021 and earlier (savonet/ocaml-ssl#115).
bug fixes in c interface wrong way for checking if we need retry in Ssl.flush missplaced SSL_clear_error for shutdown and finish all Runtime_lock functions Added Error_want_retry_verify in ssl.ml/mli Added a safer conversion to type Ssl.ssl_error remove all raw_xxx functions and use shadowing Simplify error treatment wrong function name in error. added a comment to explain -2 in flush Use BIO_should_retry in flush (savonet#120) --------- Co-authored-by: Antonio Nuno Monteiro <anmonteiro@gmail.com> fix issue savonet#103 for output_string, output_char and input_int (savonet#116) * fix issue savonet#103 for output_string output_char and input_int * Update CHANGES.md * Update CHANGES.md * Apply suggestions from code review --------- Co-authored-by: Antonio Nuno Monteiro <anmonteiro@gmail.com> bug fixes in c interface (savonet#118) * bug fixes in c interface * wrong way for checking if we need retry in Ssl.flush * missplaced SSL_clear_error for whutdown * revert one change to put in a separate PR. * forgot one case * Update CHANGES.md --------- Co-authored-by: Antonio Nuno Monteiro <anmonteiro@gmail.com> added comment not to forget to update macro in ssl_stubs.c when adding errors revert error treatment
bug fixes in c interface wrong way for checking if we need retry in Ssl.flush missplaced SSL_clear_error for shutdown and finish all Runtime_lock functions Added Error_want_retry_verify in ssl.ml/mli Added a safer conversion to type Ssl.ssl_error remove all raw_xxx functions and use shadowing Simplify error treatment wrong function name in error. added a comment to explain -2 in flush Use BIO_should_retry in flush (savonet#120) --------- Co-authored-by: Antonio Nuno Monteiro <anmonteiro@gmail.com> fix issue savonet#103 for output_string, output_char and input_int (savonet#116) * fix issue savonet#103 for output_string output_char and input_int * Update CHANGES.md * Update CHANGES.md * Apply suggestions from code review --------- Co-authored-by: Antonio Nuno Monteiro <anmonteiro@gmail.com> bug fixes in c interface (savonet#118) * bug fixes in c interface * wrong way for checking if we need retry in Ssl.flush * missplaced SSL_clear_error for whutdown * revert one change to put in a separate PR. * forgot one case * Update CHANGES.md --------- Co-authored-by: Antonio Nuno Monteiro <anmonteiro@gmail.com> added comment not to forget to update macro in ssl_stubs.c when adding errors revert error treatment
bug fixes in c interface wrong way for checking if we need retry in Ssl.flush missplaced SSL_clear_error for shutdown and finish all Runtime_lock functions Added Error_want_retry_verify in ssl.ml/mli Added a safer conversion to type Ssl.ssl_error remove all raw_xxx functions and use shadowing Simplify error treatment wrong function name in error. added a comment to explain -2 in flush Use BIO_should_retry in flush (savonet#120) --------- Co-authored-by: Antonio Nuno Monteiro <anmonteiro@gmail.com> fix issue savonet#103 for output_string, output_char and input_int (savonet#116) * fix issue savonet#103 for output_string output_char and input_int * Update CHANGES.md * Update CHANGES.md * Apply suggestions from code review --------- Co-authored-by: Antonio Nuno Monteiro <anmonteiro@gmail.com> bug fixes in c interface (savonet#118) * bug fixes in c interface * wrong way for checking if we need retry in Ssl.flush * missplaced SSL_clear_error for whutdown * revert one change to put in a separate PR. * forgot one case * Update CHANGES.md --------- Co-authored-by: Antonio Nuno Monteiro <anmonteiro@gmail.com> added comment not to forget to update macro in ssl_stubs.c when adding errors revert error treatment
bug fixes in c interface wrong way for checking if we need retry in Ssl.flush missplaced SSL_clear_error for shutdown and finish all Runtime_lock functions Added Error_want_retry_verify in ssl.ml/mli Added a safer conversion to type Ssl.ssl_error remove all raw_xxx functions and use shadowing Simplify error treatment wrong function name in error. added a comment to explain -2 in flush Use BIO_should_retry in flush (#120) --------- Co-authored-by: Antonio Nuno Monteiro <anmonteiro@gmail.com> fix issue #103 for output_string, output_char and input_int (#116) * fix issue #103 for output_string output_char and input_int * Update CHANGES.md * Update CHANGES.md * Apply suggestions from code review --------- Co-authored-by: Antonio Nuno Monteiro <anmonteiro@gmail.com> bug fixes in c interface (#118) * bug fixes in c interface * wrong way for checking if we need retry in Ssl.flush * missplaced SSL_clear_error for whutdown * revert one change to put in a separate PR. * forgot one case * Update CHANGES.md --------- Co-authored-by: Antonio Nuno Monteiro <anmonteiro@gmail.com> added comment not to forget to update macro in ssl_stubs.c when adding errors revert error treatment
CHANGES: - Raise an error when `Ssl.flush` isn't successful (savonet/ocaml-ssl#104, savonet/ocaml-ssl#120) - Add an API-compatible `Ssl.Runtime_lock` module. The functions in this module don't release the OCaml runtime lock. While they don't allow other OCaml threads to run concurrently, they don't perform any copying in the underlying data, leading certain workloads to be faster than their counterparts that release the lock. (savonet/ocaml-ssl#106) - Guarantee `Ssl.output_string` writes the whole string by retrying the operation with unwritten bytes (savonet/ocaml-ssl#103, savonet/ocaml-ssl#116) - Fix calls in C stubs that need to call `ERR_clear_error` before the underlying OpenSSL call (savonet/ocaml-ssl#118) - Add a module `Ssl.Error` to retrieve OpenSSL errors in a structured way (savonet/ocaml-ssl#119) - Deprecate Ssl.{SSLv23,SSLv3,TLSv1,TLSv1_1}, which were were formally deprecated in March 2021 and earlier (savonet/ocaml-ssl#115).
TODO: are the fixes for output_char and input_int really necessary and sufficient ?
fixes #103