svn commit: r1909415 - /serf/branches/1.3.x/STATUS
Author: kotkov Date: Tue Apr 25 18:31:50 2023 New Revision: 1909415 URL: http://svn.apache.org/viewvc?rev=1909415=rev Log: On the '1.3.x' branch: * STATUS: Extend the r1909252 group nomination (Do not use OpenSSL functions that operate with FILE to avoid potential CRT versions mismatch) with r1909413. Modified: serf/branches/1.3.x/STATUS Modified: serf/branches/1.3.x/STATUS URL: http://svn.apache.org/viewvc/serf/branches/1.3.x/STATUS?rev=1909415=1909414=1909415=diff == --- serf/branches/1.3.x/STATUS (original) +++ serf/branches/1.3.x/STATUS Tue Apr 25 18:31:50 2023 @@ -64,7 +64,7 @@ Candidate changes: Votes: +1: kotkov -* r1909252, r1909385, r1909406 +* r1909252, r1909385, r1909406, r1909413 Do not use OpenSSL functions that operate with FILE to avoid potential CRT versions mismatch. Use BIO based functions instead. Justification:
svn commit: r1909414 - in /serf/branches/1.3.x-r1909252-group: ./ test/server/test_sslserver.c
Author: kotkov Date: Tue Apr 25 18:29:08 2023 New Revision: 1909414 URL: http://svn.apache.org/viewvc?rev=1909414=rev Log: On the '1.3.x-r1909252-group' branch: Merge r1909413 (Remove a couple of remaining _fp() OpenSSL API usages in the test suite) from trunk, adjusting to the state of the 1.3.x branch. * test/server/test_sslserver.c (err_file_print_cb): New callback for ERR_print_errors_cb(). (ssl_handshake, ssl_socket_read): Replace usages of ERR_print_errors_fp() with ERR_print_errors_cb(). Pass the new callback. Modified: serf/branches/1.3.x-r1909252-group/ (props changed) serf/branches/1.3.x-r1909252-group/test/server/test_sslserver.c Propchange: serf/branches/1.3.x-r1909252-group/ -- Merged /serf/trunk:r1909413 Modified: serf/branches/1.3.x-r1909252-group/test/server/test_sslserver.c URL: http://svn.apache.org/viewvc/serf/branches/1.3.x-r1909252-group/test/server/test_sslserver.c?rev=1909414=1909413=1909414=diff == --- serf/branches/1.3.x-r1909252-group/test/server/test_sslserver.c (original) +++ serf/branches/1.3.x-r1909252-group/test/server/test_sslserver.c Tue Apr 25 18:29:08 2023 @@ -43,6 +43,11 @@ typedef struct ssl_context_t { } ssl_context_t; +static int err_file_print_cb(const char *str, size_t len, void *bp) +{ +return fwrite(str, 1, len, bp); +} + static int pem_passwd_cb(char *buf, int size, int rwflag, void *userdata) { strncpy(buf, "serftest", size); @@ -372,7 +377,7 @@ static apr_status_t ssl_handshake(serv_c return serv_ctx->bio_read_status; /* Usually APR_EAGAIN */ default: serf__log(TEST_VERBOSE, __FILE__, "SSL Error %d: ", ssl_err); -ERR_print_errors_fp(stderr); +ERR_print_errors_cb(err_file_print_cb, stderr); serf__log_nopref(TEST_VERBOSE, "\n"); return SERF_ERROR_ISSUE_IN_TESTSUITE; } @@ -428,7 +433,7 @@ ssl_socket_read(serv_ctx_t *serv_ctx, ch *len = 0; serf__log(TEST_VERBOSE, __FILE__, "ssl_socket_read SSL Error %d: ", ssl_err); -ERR_print_errors_fp(stderr); +ERR_print_errors_cb(err_file_print_cb, stderr); serf__log_nopref(TEST_VERBOSE, "\n"); return SERF_ERROR_ISSUE_IN_TESTSUITE; }
svn commit: r1909413 - /serf/trunk/test/MockHTTPinC/MockHTTP_server.c
Author: kotkov Date: Tue Apr 25 18:18:18 2023 New Revision: 1909413 URL: http://svn.apache.org/viewvc?rev=1909413=rev Log: Remove a couple of remaining _fp() OpenSSL API usages in the test suite when compiling with MH_VERBOSE=1. (Also see r1909385 and r1909406.) * test/MockHTTPinC/MockHTTP_server.c (err_file_print_cb): New callback for ERR_print_errors_cb(). (sslSocketWrite, sslSocketRead, appendSSLErrMessage, sslHandshake): Replace usages of ERR_print_errors_fp() with ERR_print_errors_cb(). Pass the new callback. Modified: serf/trunk/test/MockHTTPinC/MockHTTP_server.c Modified: serf/trunk/test/MockHTTPinC/MockHTTP_server.c URL: http://svn.apache.org/viewvc/serf/trunk/test/MockHTTPinC/MockHTTP_server.c?rev=1909413=1909412=1909413=diff == --- serf/trunk/test/MockHTTPinC/MockHTTP_server.c (original) +++ serf/trunk/test/MockHTTPinC/MockHTTP_server.c Tue Apr 25 18:18:18 2023 @@ -2255,6 +2255,16 @@ struct sslCtx_t { static int init_done = 0; +#if MH_VERBOSE +/** + * OpenSSL callback for ERR_print_errors_cb(). + */ +static int err_file_print_cb(const char *str, size_t len, void *bp) +{ +return fwrite(str, 1, len, bp); +} +#endif + /** * OpenSSL callback, returns the passphrase used to decrypt the private key. */ @@ -2843,7 +2853,7 @@ sslSocketWrite(_mhClientCtx_t *cctx, con _mhLog(MH_VERBOSE, cctx->skt, "sslSocketWrite SSL Error %d: ", ssl_err); #if MH_VERBOSE -ERR_print_errors_fp(stderr); +ERR_print_errors_cb(err_file_print_cb, stderr); #endif return APR_EGENERAL; } @@ -2903,7 +2913,7 @@ sslSocketRead(apr_socket_t *skt, void *b _mhLog(MH_VERBOSE, skt, "sslSocketRead SSL Error %d: ", ssl_err); #if MH_VERBOSE -ERR_print_errors_fp(stderr); +ERR_print_errors_cb(err_file_print_cb, stderr); #endif return APR_EGENERAL; } @@ -2929,7 +2939,7 @@ static void appendSSLErrMessage(const Mo apr_size_t startpos = strlen(mh->errmsg); ERR_error_string(result, mh->errmsg + startpos); #if MH_VERBOSE -ERR_print_errors_fp(stderr); +ERR_print_errors_cb(err_file_print_cb, stderr); #endif } @@ -3057,7 +3067,7 @@ static apr_status_t sslHandshake(_mhClie "SSL Error %d: Library=%d, Reason=%d", ssl_err, lib, reason); #if MH_VERBOSE -ERR_print_errors_fp(stderr); +ERR_print_errors_cb(err_file_print_cb, stderr); #endif } return APR_EGENERAL;
svn commit: r1909410 - /serf/branches/1.3.x/STATUS
Author: kotkov Date: Tue Apr 25 17:42:50 2023 New Revision: 1909410 URL: http://svn.apache.org/viewvc?rev=1909410=rev Log: On the '1.3.x' branch: * STATUS: Nominate r1909252, r1909385, r1909406 (Do not use OpenSSL functions that operate with FILE to avoid potential CRT versions mismatch). Modified: serf/branches/1.3.x/STATUS Modified: serf/branches/1.3.x/STATUS URL: http://svn.apache.org/viewvc/serf/branches/1.3.x/STATUS?rev=1909410=1909409=1909410=diff == --- serf/branches/1.3.x/STATUS (original) +++ serf/branches/1.3.x/STATUS Tue Apr 25 17:42:50 2023 @@ -64,6 +64,16 @@ Candidate changes: Votes: +1: kotkov +* r1909252, r1909385, r1909406 + Do not use OpenSSL functions that operate with FILE to avoid potential CRT + versions mismatch. Use BIO based functions instead. + Justification: +Avoids a potential source of CRT versions mismatch. Removes a dependency +on openssl/applink.c. + Branch: ^/serf/branches/1.3.x-r1909252-group + Votes: ++1: kotkov + Veto-blocked changes: =
svn commit: r1909408 - in /serf/branches/1.3.x-r1909252-group: ./ SConstruct buckets/ssl_buckets.c test/server/test_sslserver.c test/test_ssl.c
Author: kotkov Date: Tue Apr 25 17:34:03 2023 New Revision: 1909408 URL: http://svn.apache.org/viewvc?rev=1909408=rev Log: On the '1.3.x-r1909252-group' branch: Merge r1909252, r1909385, r1909406 from trunk: - r1909252: Do not use OpenSSL functions that operates with FILE to avoid potential CRT versions mismatch. - r1909385: Define OPENSSL_NO_STDIO to prevent using _fp() API from OpenSSL. - r1909406: Do not include openssl/applink.c in tests. Resolve the conflicts and adjust the change to the state of the 1.3.x branch. Modified: serf/branches/1.3.x-r1909252-group/ (props changed) serf/branches/1.3.x-r1909252-group/SConstruct serf/branches/1.3.x-r1909252-group/buckets/ssl_buckets.c serf/branches/1.3.x-r1909252-group/test/server/test_sslserver.c serf/branches/1.3.x-r1909252-group/test/test_ssl.c Propchange: serf/branches/1.3.x-r1909252-group/ -- Merged /serf/trunk:r1909252,1909385,1909406 Modified: serf/branches/1.3.x-r1909252-group/SConstruct URL: http://svn.apache.org/viewvc/serf/branches/1.3.x-r1909252-group/SConstruct?rev=1909408=1909407=1909408=diff == --- serf/branches/1.3.x-r1909252-group/SConstruct (original) +++ serf/branches/1.3.x-r1909252-group/SConstruct Tue Apr 25 17:34:03 2023 @@ -292,6 +292,9 @@ SOURCES = Glob('*.c') + Glob('buckets/*. lib_static = env.StaticLibrary(LIBNAMESTATIC, SOURCES) lib_shared = env.SharedLibrary(LIBNAME, SOURCES + SHARED_SOURCES) +# Define OPENSSL_NO_STDIO to prevent using _fp() API. +env.Append(CPPDEFINES=['OPENSSL_NO_STDIO']) + if aprstatic: env.Append(CPPDEFINES=['APR_DECLARE_STATIC', 'APU_DECLARE_STATIC']) Modified: serf/branches/1.3.x-r1909252-group/buckets/ssl_buckets.c URL: http://svn.apache.org/viewvc/serf/branches/1.3.x-r1909252-group/buckets/ssl_buckets.c?rev=1909408=1909407=1909408=diff == --- serf/branches/1.3.x-r1909252-group/buckets/ssl_buckets.c (original) +++ serf/branches/1.3.x-r1909252-group/buckets/ssl_buckets.c Tue Apr 25 17:34:03 2023 @@ -1521,11 +1521,11 @@ apr_status_t serf_ssl_load_cert_file( const char *file_path, apr_pool_t *pool) { -FILE *fp = fopen(file_path, "r"); +BIO *bio = BIO_new_file(file_path, "r"); -if (fp) { -X509 *ssl_cert = PEM_read_X509(fp, NULL, NULL, NULL); -fclose(fp); +if (bio) { +X509 *ssl_cert = PEM_read_bio_X509(bio, NULL, NULL, NULL); +BIO_free(bio); if (ssl_cert) { *cert = apr_palloc(pool, sizeof(serf_ssl_certificate_t)); Modified: serf/branches/1.3.x-r1909252-group/test/server/test_sslserver.c URL: http://svn.apache.org/viewvc/serf/branches/1.3.x-r1909252-group/test/server/test_sslserver.c?rev=1909408=1909407=1909408=diff == --- serf/branches/1.3.x-r1909252-group/test/server/test_sslserver.c (original) +++ serf/branches/1.3.x-r1909252-group/test/server/test_sslserver.c Tue Apr 25 17:34:03 2023 @@ -269,10 +269,10 @@ init_ssl_context(serv_ctx_t *serv_ctx, store = SSL_CTX_get_cert_store(ssl_ctx->ctx); while(certfile) { -FILE *fp = fopen(certfile, "r"); -if (fp) { -X509 *ssl_cert = PEM_read_X509(fp, NULL, NULL, NULL); -fclose(fp); +BIO *bio = BIO_new_file(certfile, "r"); +if (bio) { +X509 *ssl_cert = PEM_read_bio_X509(bio, NULL, NULL, NULL); +BIO_free(bio); SSL_CTX_add_extra_chain_cert(ssl_ctx->ctx, ssl_cert); Modified: serf/branches/1.3.x-r1909252-group/test/test_ssl.c URL: http://svn.apache.org/viewvc/serf/branches/1.3.x-r1909252-group/test/test_ssl.c?rev=1909408=1909407=1909408=diff == --- serf/branches/1.3.x-r1909252-group/test/test_ssl.c (original) +++ serf/branches/1.3.x-r1909252-group/test/test_ssl.c Tue Apr 25 17:34:03 2023 @@ -28,12 +28,6 @@ #include "test_serf.h" -#if defined(WIN32) && defined(_DEBUG) -/* Include this file to allow running a Debug build of serf with a Release - build of OpenSSL. */ -#include -#endif - /* Test setting up the openssl library. */ static void test_ssl_init(CuTest *tc) {
svn commit: r1909407 - /serf/branches/1.3.x-r1909252-group/
Author: kotkov Date: Tue Apr 25 17:30:25 2023 New Revision: 1909407 URL: http://svn.apache.org/viewvc?rev=1909407=rev Log: Create an 1.3.x backport branch for r1909252, r1909385, r1909406: - r1909252: Do not use OpenSSL functions that operates with FILE to avoid potential CRT versions mismatch. - r1909385: Define OPENSSL_NO_STDIO to prevent using _fp() API from OpenSSL. - r1909406: Do not include openssl/applink.c in tests. Added: serf/branches/1.3.x-r1909252-group/ (props changed) - copied from r1909406, serf/branches/1.3.x/ Propchange: serf/branches/1.3.x-r1909252-group/ -- --- svn:ignore (added) +++ svn:ignore Tue Apr 25 17:30:25 2023 @@ -0,0 +1,12 @@ +*.os +.gdb_history +Debug +Release +.sconsign.dblite +.sconf_temp +config.log +.saved_config +serf-1.pc +libserf-1.dylib +serf-2.pc +libserf-2.dylib Propchange: serf/branches/1.3.x-r1909252-group/ -- --- svn:mergeinfo (added) +++ svn:mergeinfo Tue Apr 25 17:30:25 2023 @@ -0,0 +1,7 @@ +/serf/branches/1.3.x-fix-outgoing-request-err:1804540-1808208 +/serf/branches/1.3.x-r1804008-group:1805337-1808209 +/serf/branches/1.3.x-r1805301:1805336-1808212 +/serf/branches/1.3.x-r1814714:1814716-1909313 +/serf/branches/multiple_ssl_impls:1699382 +/serf/branches/windows-sspi:1698866-1698877 +/serf/trunk:1699516-1699518,1699520-1699522,1699528,1699530-1699535,1699537,1699539-1699543,1699548-1699549,1699553,1699555-1699556,1699559-1699560,1699563-1699565,1699567-1699570,1699572-1699573,1699578-1699580,1699582-1699597,1699599-1699602,1699607,1699610,1699613,1699615-1699618,1699622-1699623,1699626-1699627,1699633,1699637,1699642,1699645,1699647,1699649-1699650,1699652,1699654-1699655,1699659-1699665,1699671,1699674,1699680-1699683,1699687-1699688,1699690,1699692-1699694,1699698-1699700,1699702,1699707-1699708,1699712-1699716,1699720,1699724-1699725,1699728,1699730,1699733,1699762,1699770,1699773,1699777,1699780-1699781,1699791,1699798,1699800-1699801,1699807,1699817,1699819,1699838,1699843,1699846,1699850,1699852,1699858-1699859,1699861,1699873,1699881,1699884,1699902-1699903,1699906,1699924,1699926-1699927,1699930,1699932,1699936-1699937,1699941,1699944,1699948-1699950,1699954,1699957,1699964,1699973,1699975,1699985-1699987,163-164,1700031,1700062,1700128,1700149,1 700234,1700236,1700246,1700270,1700650,1700830,1702096,1702221,1702264,1703624,1704725,1708849,1709155-1709156,1709296,1748673,1757829,1758190,1758193,1804005,1804008,1804016,1804534,1805301,1814714,1902398,1909245,1909247,1909318 Propchange: serf/branches/1.3.x-r1909252-group/ -- tsvn:logwidthmarker = 78
svn commit: r1909406 - in /serf/trunk: CMakeLists.txt SConstruct test/test_ssl.c
Author: ivan Date: Tue Apr 25 16:10:55 2023 New Revision: 1909406 URL: http://svn.apache.org/viewvc?rev=1909406=rev Log: Do not include openssl/applink.c: we do not use _fp() OpenSSL API since r1909252. * CMakeLists.txt * SConstruct (): Do not test for openssl/applink.c. * test/test_ssl.c (): Do not include openssl/applink.c. Modified: serf/trunk/CMakeLists.txt serf/trunk/SConstruct serf/trunk/test/test_ssl.c Modified: serf/trunk/CMakeLists.txt URL: http://svn.apache.org/viewvc/serf/trunk/CMakeLists.txt?rev=1909406=1909405=1909406=diff == --- serf/trunk/CMakeLists.txt (original) +++ serf/trunk/CMakeLists.txt Tue Apr 25 16:10:55 2023 @@ -243,7 +243,6 @@ CheckFunctionMacro("OPENSSL_malloc_init" "${OPENSSL_INCLUDE_DIR}" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES}) CheckFunctionMacro("SSL_library_init" "SERF_HAVE_OPENSSL_SSL_LIBRARY_INIT" "openssl/ssl.h" "${OPENSSL_INCLUDE_DIR}" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES}) -CheckHeader("openssl/applink.c" "SERF_HAVE_OPENSSL_APPLINK_C" ${OPENSSL_INCLUDE_DIR}) CheckHeader("stdbool.h" "HAVE_STDBOOL_H=1") CheckType("OSSL_HANDSHAKE_STATE" "openssl/ssl.h" "SERF_HAVE_OSSL_HANDSHAKE_STATE" ${OPENSSL_INCLUDE_DIR}) Modified: serf/trunk/SConstruct URL: http://svn.apache.org/viewvc/serf/trunk/SConstruct?rev=1909406=1909405=1909406=diff == --- serf/trunk/SConstruct (original) +++ serf/trunk/SConstruct Tue Apr 25 16:10:55 2023 @@ -507,8 +507,6 @@ else: # Check for OpenSSL functions which are only available in some of # the versions we support. Also handles forks like LibreSSL. conf = Configure(env) -if conf.CheckCHeader('openssl/applink.c'): - env.Append(CPPDEFINES=['SERF_HAVE_OPENSSL_APPLINK_C']) if not conf.CheckFunc('BIO_set_init', '#include '): env.Append(CPPDEFINES=['SERF_NO_SSL_BIO_WRAPPERS']) if not conf.CheckFunc('X509_STORE_get0_param', '#include '): Modified: serf/trunk/test/test_ssl.c URL: http://svn.apache.org/viewvc/serf/trunk/test/test_ssl.c?rev=1909406=1909405=1909406=diff == --- serf/trunk/test/test_ssl.c (original) +++ serf/trunk/test/test_ssl.c Tue Apr 25 16:10:55 2023 @@ -35,19 +35,6 @@ #include #endif -#if defined(WIN32) && defined(_DEBUG) && defined(SERF_HAVE_OPENSSL_APPLINK_C) -/* Include this file to allow running a Debug build of serf with a Release - build of OpenSSL. Note: his file is not available on OpenSSL 1.1.x. */ -#if defined(_MSC_VER) && _MSC_VER >= 1400 -#pragma warning(push) -#pragma warning(disable: 4152) -#endif -#include -#if defined(_MSC_VER) && _MSC_VER >= 1400 -#pragma warning(pop) -#endif -#endif - /* Test setting up the openssl library. */ static void test_ssl_init(CuTest *tc) {
svn commit: r1909399 - /serf/branches/1.3.x/STATUS
Author: kotkov Date: Tue Apr 25 09:22:54 2023 New Revision: 1909399 URL: http://svn.apache.org/viewvc?rev=1909399=rev Log: On the '1.3.x' branch: * STATUS: Nominate r1902208, r1902304 (Rework BIO control handlers to support BIO_CTRL_EOF and to properly respond to unknown control values). Add a note to the r1875937 nomination. Modified: serf/branches/1.3.x/STATUS Modified: serf/branches/1.3.x/STATUS URL: http://svn.apache.org/viewvc/serf/branches/1.3.x/STATUS?rev=1909399=1909398=1909399=diff == --- serf/branches/1.3.x/STATUS (original) +++ serf/branches/1.3.x/STATUS Tue Apr 25 09:22:54 2023 @@ -13,6 +13,7 @@ Candidate changes: * r1875937 Fix test case against OpenSSL 1.1.1e+. + [ NOTE: Superceded by the r1902208 fix. ] Justification: Serf should test cleanly against upstreams. Branch: ^/serf/branches/1.3.x-ssltest @@ -50,6 +51,19 @@ Candidate changes: Votes: +1: kotkov +* r1902208, r1902304 + Rework BIO control handlers to support BIO_CTRL_EOF and to properly respond + to unknown control values. + Justification: +- Fixes "unexpected eof while reading" errors with OpenSSL 3, also observed + in the test suite. +- Fixes a user-reported issue with OpenSSL 3 where serf BIOs are incorrectly + assumed to support KTLS: + https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=253135 + Branch: ^/serf/branches/1.3.x-r1902208+r1902304 + Votes: ++1: kotkov + Veto-blocked changes: =
svn commit: r1909397 - in /serf/branches/1.3.x-r1902208+r1902304: ./ buckets/ssl_buckets.c test/server/test_server.h test/server/test_sslserver.c
Author: kotkov Date: Tue Apr 25 08:49:22 2023 New Revision: 1909397 URL: http://svn.apache.org/viewvc?rev=1909397=rev Log: On the '1.3.x-r1902208+r1902304' branch: Merge r1902208, r1902304 from trunk: - r1902208: Add support for BIO_CTRL_EOF, which is being used by OpenSSL 3.0+ and OpenSSL 1.1.1e. - r1902304: Fix the return value for unknown controls in the BIO control functions. Resolve the conflicts and adjust the change to the state of the 1.3.x branch. Modified: serf/branches/1.3.x-r1902208+r1902304/ (props changed) serf/branches/1.3.x-r1902208+r1902304/buckets/ssl_buckets.c serf/branches/1.3.x-r1902208+r1902304/test/server/test_server.h serf/branches/1.3.x-r1902208+r1902304/test/server/test_sslserver.c Propchange: serf/branches/1.3.x-r1902208+r1902304/ -- Merged /serf/trunk:r1902208,1902304 Modified: serf/branches/1.3.x-r1902208+r1902304/buckets/ssl_buckets.c URL: http://svn.apache.org/viewvc/serf/branches/1.3.x-r1902208%2Br1902304/buckets/ssl_buckets.c?rev=1909397=1909396=1909397=diff == --- serf/branches/1.3.x-r1902208+r1902304/buckets/ssl_buckets.c (original) +++ serf/branches/1.3.x-r1902208+r1902304/buckets/ssl_buckets.c Tue Apr 25 08:49:22 2023 @@ -176,6 +176,10 @@ struct serf_ssl_context_t { /* Status of a fatal error, returned on subsequent encrypt or decrypt requests. */ apr_status_t fatal_err; + +/* OpenSSL 1.1.1e introduced BIO_FLAGS_IN_EOF, but we implement + our own hit eof to support versions < 1.1.1e. */ +int hit_eof; }; typedef struct { @@ -284,6 +288,10 @@ static int bio_bucket_read(BIO *bio, cha serf__log(SSL_VERBOSE, __FILE__, "bio_bucket_read received %d bytes (%d)\n", len, status); +if (APR_STATUS_IS_EOF(status)) { +ctx->hit_eof = 1; +} + if (!SERF_BUCKET_READ_ERROR(status)) { /* Oh suck. */ if (len) { @@ -407,21 +415,43 @@ static int bio_bucket_destroy(BIO *bio) static long bio_bucket_ctrl(BIO *bio, int cmd, long num, void *ptr) { -long ret = 1; +serf_ssl_context_t *ctx = bio_get_data(bio); switch (cmd) { +case BIO_CTRL_FLUSH: +/* At this point we can't force a flush. */ +return 1; +case BIO_CTRL_PUSH: +case BIO_CTRL_POP: +return 0; +case BIO_CTRL_EOF: +return ctx->hit_eof; default: /* abort(); */ -break; +return 0; +} +} + +static long bio_file_ctrl(BIO *bio, int cmd, long num, void *ptr) +{ +apr_file_t *file = bio_get_data(bio); + +switch (cmd) { case BIO_CTRL_FLUSH: /* At this point we can't force a flush. */ -break; +return 1; case BIO_CTRL_PUSH: case BIO_CTRL_POP: -ret = 0; -break; +return 0; +case BIO_CTRL_EOF: +if (apr_file_eof(file) == APR_EOF) +return 1; +else +return 0; +default: +/* abort(); */ +return 0; } -return ret; } #ifndef USE_OPENSSL_1_1_API @@ -447,7 +477,7 @@ static BIO_METHOD bio_file_method = { bio_file_read, NULL,/* Is this called? */ bio_file_gets, /* Is this called? */ -bio_bucket_ctrl, +bio_file_ctrl, bio_bucket_create, bio_bucket_destroy, #ifdef OPENSSL_VERSION_NUMBER @@ -487,7 +517,7 @@ static BIO_METHOD *bio_meth_file_new(voi BIO_meth_set_write(biom, bio_file_write); BIO_meth_set_read(biom, bio_file_read); BIO_meth_set_gets(biom, bio_file_gets); -BIO_meth_set_ctrl(biom, bio_bucket_ctrl); +BIO_meth_set_ctrl(biom, bio_file_ctrl); BIO_meth_set_create(biom, bio_bucket_create); BIO_meth_set_destroy(biom, bio_bucket_destroy); #else @@ -1411,6 +1441,7 @@ static serf_ssl_context_t *ssl_init_cont ssl_ctx->cached_cert_pw = 0; ssl_ctx->pending_err = APR_SUCCESS; ssl_ctx->fatal_err = APR_SUCCESS; +ssl_ctx->hit_eof = 0; ssl_ctx->cert_callback = NULL; ssl_ctx->cert_pw_callback = NULL; Modified: serf/branches/1.3.x-r1902208+r1902304/test/server/test_server.h URL: http://svn.apache.org/viewvc/serf/branches/1.3.x-r1902208%2Br1902304/test/server/test_server.h?rev=1909397=1909396=1909397=diff == --- serf/branches/1.3.x-r1902208+r1902304/test/server/test_server.h (original) +++ serf/branches/1.3.x-r1902208+r1902304/test/server/test_server.h Tue Apr 25 08:49:22 2023 @@ -115,6 +115,7 @@ struct serv_ctx_t { void *ssl_ctx; const char *client_cn; apr_status_t bio_read_status; +int hit_eof; }; void setup_test_server(serv_ctx_t **servctx_p, Modified: serf/branches/1.3.x-r1902208+r1902304/test/server/test_sslserver.c URL:
svn commit: r1909396 - /serf/branches/1.3.x-r1902208+r1902304/
Author: kotkov Date: Tue Apr 25 08:43:42 2023 New Revision: 1909396 URL: http://svn.apache.org/viewvc?rev=1909396=rev Log: Create an 1.3.x backport branch for r1902208 and r1902304: - r1902208: Add support for BIO_CTRL_EOF, which is being used by OpenSSL 3.0+ and OpenSSL 1.1.1e. - r1902304: Fix the return value for unknown controls in the BIO control functions. Added: serf/branches/1.3.x-r1902208+r1902304/ (props changed) - copied from r1909395, serf/branches/1.3.x/ Propchange: serf/branches/1.3.x-r1902208+r1902304/ -- --- svn:ignore (added) +++ svn:ignore Tue Apr 25 08:43:42 2023 @@ -0,0 +1,12 @@ +*.os +.gdb_history +Debug +Release +.sconsign.dblite +.sconf_temp +config.log +.saved_config +serf-1.pc +libserf-1.dylib +serf-2.pc +libserf-2.dylib Propchange: serf/branches/1.3.x-r1902208+r1902304/ -- --- svn:mergeinfo (added) +++ svn:mergeinfo Tue Apr 25 08:43:42 2023 @@ -0,0 +1,7 @@ +/serf/branches/1.3.x-fix-outgoing-request-err:1804540-1808208 +/serf/branches/1.3.x-r1804008-group:1805337-1808209 +/serf/branches/1.3.x-r1805301:1805336-1808212 +/serf/branches/1.3.x-r1814714:1814716-1909313 +/serf/branches/multiple_ssl_impls:1699382 +/serf/branches/windows-sspi:1698866-1698877 +/serf/trunk:1699516-1699518,1699520-1699522,1699528,1699530-1699535,1699537,1699539-1699543,1699548-1699549,1699553,1699555-1699556,1699559-1699560,1699563-1699565,1699567-1699570,1699572-1699573,1699578-1699580,1699582-1699597,1699599-1699602,1699607,1699610,1699613,1699615-1699618,1699622-1699623,1699626-1699627,1699633,1699637,1699642,1699645,1699647,1699649-1699650,1699652,1699654-1699655,1699659-1699665,1699671,1699674,1699680-1699683,1699687-1699688,1699690,1699692-1699694,1699698-1699700,1699702,1699707-1699708,1699712-1699716,1699720,1699724-1699725,1699728,1699730,1699733,1699762,1699770,1699773,1699777,1699780-1699781,1699791,1699798,1699800-1699801,1699807,1699817,1699819,1699838,1699843,1699846,1699850,1699852,1699858-1699859,1699861,1699873,1699881,1699884,1699902-1699903,1699906,1699924,1699926-1699927,1699930,1699932,1699936-1699937,1699941,1699944,1699948-1699950,1699954,1699957,1699964,1699973,1699975,1699985-1699987,163-164,1700031,1700062,1700128,1700149,1 700234,1700236,1700246,1700270,1700650,1700830,1702096,1702221,1702264,1703624,1704725,1708849,1709155-1709156,1709296,1748673,1757829,1758190,1758193,1804005,1804008,1804016,1804534,1805301,1814714,1902398,1909245,1909247,1909318 Propchange: serf/branches/1.3.x-r1902208+r1902304/ -- tsvn:logwidthmarker = 78