svn commit: r1909415 - /serf/branches/1.3.x/STATUS

2023-04-25 Thread kotkov
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

2023-04-25 Thread kotkov
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

2023-04-25 Thread kotkov
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

2023-04-25 Thread kotkov
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

2023-04-25 Thread kotkov
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/

2023-04-25 Thread kotkov
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

2023-04-25 Thread ivan
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

2023-04-25 Thread kotkov
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

2023-04-25 Thread kotkov
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/

2023-04-25 Thread kotkov
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