commit:     0ad85af662930ce594c408c15893327641d2141d
Author:     Brian Evans <grknight <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 28 01:55:16 2021 +0000
Commit:     Brian Evans <grknight <AT> gentoo <DOT> org>
CommitDate: Tue Sep 28 01:56:25 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0ad85af6

dev-php/pecl-http: Fix respecting flags using backported patch

Closes: https://bugs.gentoo.org/791013
Signed-off-by: Brian Evans <grknight <AT> gentoo.org>

 .../files/pecl-http-3.2.4-curl-cookies.patch       | 243 ++++++++++++++++++++-
 1 file changed, 237 insertions(+), 6 deletions(-)

diff --git a/dev-php/pecl-http/files/pecl-http-3.2.4-curl-cookies.patch 
b/dev-php/pecl-http/files/pecl-http-3.2.4-curl-cookies.patch
index 3c124b4624a..2f3a7c73a24 100644
--- a/dev-php/pecl-http/files/pecl-http-3.2.4-curl-cookies.patch
+++ b/dev-php/pecl-http/files/pecl-http-3.2.4-curl-cookies.patch
@@ -1,11 +1,242 @@
---- a/src/php_http_client_curl.c       2021-01-13 10:34:34.000000000 -0500
-+++ b/src/php_http_client_curl.c       2021-09-22 10:38:58.854615743 -0400
-@@ -834,7 +834,7 @@
+diff --git a/autoconf/pecl/libbrotli.m4 b/autoconf/pecl/libbrotli.m4
+index f8916e2..575f635 100644
+--- a/autoconf/pecl/libbrotli.m4
++++ b/autoconf/pecl/libbrotli.m4
+@@ -1,5 +1,11 @@
+ 
+ AC_DEFUN([PECL_CHECK_LIBBROTLI], [
++      dnl config.m4 calls PECL_CHECK_DONE once more
++      PECL_COUNT_CHECKS([+1])
++      PECL_SAVE_ENV([CPPFLAGS], [libbrotli])
++      PECL_SAVE_ENV([LDFLAGS], [libbrotli])
++      PECL_SAVE_ENV([LIBS], [libbrotli])
++
+       PECL_CHECK_LIBBROTLI_COMMON([$1], [$2])
+       PECL_CHECK_DONE(libbrotlicommon, [$PECL_VAR([HAVE_LIBBROTLI_COMMON])])
+       PECL_CHECK_LIBBROTLI_DEC([$1], [$2])
+diff --git a/autoconf/pecl/libcurl.m4 b/autoconf/pecl/libcurl.m4
+index 4d99207..8de9499 100644
+--- a/autoconf/pecl/libcurl.m4
++++ b/autoconf/pecl/libcurl.m4
+@@ -160,6 +160,26 @@ AC_DEFUN([PECL_HAVE_LIBCURL_SSL], [dnl
+                               fi
+                       fi
+               ])
++
++              PECL_HAVE_CONST([curl/curl.h], [CURL_LOCK_DATA_SSL_SESSION], 
int, [
++                      AC_CACHE_CHECK([whether curl_share accepts 
CURL_LOCK_DATA_SSL_SESSION], PECL_CACHE_VAR([LIBCURL_SHARE_SSL]), [
++                              PECL_CACHE_VAR([LIBCURL_SHARE_SSL])=
++                              AC_TRY_RUN([
++                                      #include <curl/curl.h>
++                                      int main(int argc, char *argv[]) {
++                                              CURLSH *ch = curl_share_init();
++                                              return curl_share_setopt(ch, 
CURLSHOPT_SHARE, CURL_LOCK_DATA_SSL_SESSION);
++                                      }
++                              ], [
++                                      PECL_CACHE_VAR([LIBCURL_SHARE_SSL])=yes
++                              ], [
++                                      PECL_CACHE_VAR([LIBCURL_SHARE_SSL])=no
++                              ])
++                      ])
++                      if test "$PECL_CACHE_VAR([LIBCURL_SHARE_SSL])" = yes; 
then
++                              PECL_DEFINE([HAVE_LIBCURL_SHARE_SSL], [1])
++                      fi
++              ])
+       ])
+ ])
+ dnl
+diff --git a/autoconf/pecl/pecl.m4 b/autoconf/pecl/pecl.m4
+index ffa45ac..d8735b0 100644
+--- a/autoconf/pecl/pecl.m4
++++ b/autoconf/pecl/pecl.m4
+@@ -70,6 +70,12 @@ AC_DEFUN([PECL_RESTORE_ENV], [
+       $1=$PECL_SAVE_VAR([$2_$1])
+ ])
+ dnl
++dnl PECL_COUNT_CHECKS(incdec)
++dnl
++AC_DEFUN([PECL_COUNT_CHECKS], [
++      PECL_VAR([_checks])=$(($PECL_VAR([_checks])$1))
++])
++dnl
+ dnl PECL_EVAL_LIBLINE(libline)
+ dnl
+ AC_DEFUN([PECL_EVAL_LIBLINE], [
+@@ -244,6 +250,7 @@ dnl
+ dnl PECL_CHECK_CUSTOM(name, path, header, lib, version)
+ dnl
+ AC_DEFUN([PECL_CHECK_CUSTOM], [
++      PECL_COUNT_CHECKS([+1])
+       PECL_SAVE_ENV([CPPFLAGS], [$1])
+       PECL_SAVE_ENV([LDFLAGS], [$1])
+       PECL_SAVE_ENV([LIBS], [$1])
+@@ -260,10 +267,10 @@ AC_DEFUN([PECL_CHECK_CUSTOM], [
+               done
+       ])
+       if test -n "$PECL_CACHE_VAR([$1_prefix])"; then
+-              CPPFLAGS="-I$PECL_CACHE_VAR([$1_prefix])/include"
+-              LDFLAGS="-L$PECL_CACHE_VAR([$1_prefix])/$PHP_LIBDIR"
+-              LIBS="-l$4"
+-              PECL_EVAL_LIBLINE([$LDFLAGS $LIBS])
++              CPPFLAGS="$CPPFLAGS -I$PECL_CACHE_VAR([$1_prefix])/include"
++              LDFLAGS="$LDFLAGS -L$PECL_CACHE_VAR([$1_prefix])/$PHP_LIBDIR"
++              LIBS="$LIBS -l$4"
++              dnl PECL_EVAL_LIBLINE([$LDFLAGS $LIBS])
+               
+               AC_CACHE_VAL(PECL_CACHE_VAR([$1_version]), [
+                       pushd $PECL_CACHE_VAR([$1_prefix]) >/dev/null
+@@ -288,11 +295,11 @@ dnl
+ dnl PECL_CHECK_CONFIG(name, prog-config, version-flag, cppflags-flag, 
ldflags-flag, libs-flag)
+ dnl
+ AC_DEFUN([PECL_CHECK_CONFIG], [
++      PECL_COUNT_CHECKS([+1])
+       PECL_SAVE_ENV([CPPFLAGS], [$1])
+       PECL_SAVE_ENV([LDFLAGS], [$1])
+       PECL_SAVE_ENV([LIBS], [$1])
+ 
+-
+       AC_MSG_CHECKING([for $1])
+       ifelse($2, [$PKG_CONFIG $1], [
+               AC_CACHE_VAL(PECL_CACHE_VAR([$1_exists]), [
+@@ -311,20 +318,22 @@ AC_DEFUN([PECL_CHECK_CONFIG], [
+               AC_CACHE_VAL(PECL_CACHE_VAR([$1_cppflags]), [
+                       PECL_CACHE_VAR([$1_cppflags])=$($2 $4)
+               ])
+-              CPPFLAGS=$PECL_CACHE_VAR([$1_cppflags])
++              CPPFLAGS="$CPPFLAGS $PECL_CACHE_VAR([$1_cppflags])"
+               AC_CACHE_VAL(PECL_CACHE_VAR([$1_ldflags]), [
+                       PECL_CACHE_VAR([$1_ldflags])=$($2 $5)
+               ])
+-              LDFLAGS=$PECL_CACHE_VAR([$1_ldflags])
++              LDFLAGS="$LDFLAGS $PECL_CACHE_VAR([$1_ldflags])"
+               AC_CACHE_VAL(PECL_CACHE_VAR([$1_libs]), [
+                       PECL_CACHE_VAR([$1_libs])=$($2 $6)
+               ])
+-              LIBS=$PECL_CACHE_VAR([$1_libs])
+-              PECL_EVAL_LIBLINE([$LDFLAGS $LIBS])
++              LIBS="$LIBS $PECL_CACHE_VAR([$1_libs])"
++              dnl PECL_EVAL_LIBLINE([$LDFLAGS $LIBS])
+       ifelse($2, [$PKG_CONFIG $1], [
+               fi
+       ])
+ 
++      AC_MSG_RESULT([${PECL_CHECKED_VERSION([$1]):-no}])
++
+       if test -n "$PECL_CHECKED_VERSION([$1])"; then
+               PECL_VAR([HAVE_$1])=true
+               PECL_DEFINE([HAVE_$1])
+@@ -332,8 +341,6 @@ AC_DEFUN([PECL_CHECK_CONFIG], [
+       else
+               PECL_VAR([HAVE_$1])=false
+       fi
+-
+-      AC_MSG_RESULT([${PECL_CHECKED_VERSION([$1]):-no}])
+ ])
+ dnl
+ dnl PECL_CHECK_PKGCONFIG(pkg[, additional-pkg-config-path])
+@@ -355,9 +362,25 @@ dnl
+ dnl PECL_CHECK_DONE(name, success[, incline, libline])
+ dnl
+ AC_DEFUN([PECL_CHECK_DONE], [
+-      if $2; then
+-              incline=$CPPFLAGS
+-              libline="$LDFLAGS $LIBS"
++      PECL_COUNT_CHECKS([-1])
++      success=$2
++      if $success && test -n "$LDFLAGS$LIBS"; then
++              AC_MSG_CHECKING([whether $1 can be linked])
++              AC_TRY_LINK([], [], [success=yes], [success=no])
++              AC_MSG_RESULT([$success])
++              if ! $success; then
++                      AC_MSG_WARN([$1 was found, but fails to link with:])
++                      AC_MSG_WARN([    LDFLAGS='$LDFLAGS'])
++                      AC_MSG_WARN([    LIBS='$LIBS'])
++                      AC_MSG_WARN([Missing or updated library paths?])
++              fi
++      fi
++      if $success; then
++              _cppflags=$PECL_SAVE_VAR([$1_CPPFLAGS])
++              _ldflags=$PECL_SAVE_VAR([$1_LDFLAGS])
++              _libs=$PECL_SAVE_VAR([$1_LIBS])
++              incline=${CPPFLAGS:${#_cppflags}}
++              libline=["${LDFLAGS:${#_ldflags}} ${LIBS:${#_libs}}"]
+               PECL_DEFINE([HAVE_$1])
+       else
+               incline=$3
+diff --git a/config9.m4 b/config9.m4
+index ef7d33e..695701b 100644
+--- a/config9.m4
++++ b/config9.m4
+@@ -24,6 +24,8 @@ if test "$PHP_HTTP" != "no"; then
+               AC_CHECK_LIB(nsl, getdomainname)
+       ])
+       AC_CHECK_FUNCS(mbrtowc mbtowc iswalnum inet_pton)
++
++      CFLAGS="$CFLAGS -Wno-strict-prototypes"
+ 
+       dnl ZLIB
+       PHP_ARG_WITH([http-zlib-dir], [whether/where to check for zlib],
+diff --git a/src/php_http_client_curl.c b/src/php_http_client_curl.c
+index 0e79f19..8898b5d 100644
+--- a/src/php_http_client_curl.c
++++ b/src/php_http_client_curl.c
+@@ -17,6 +17,8 @@
+ 
+ #if PHP_HTTP_HAVE_LIBCURL
+ 
++#define DEBUG_COOKIES 0
++
+ #if PHP_HTTP_HAVE_LIBCURL_OPENSSL
+ #     include <openssl/ssl.h>
+ #endif
+@@ -834,6 +836,9 @@ static ZEND_RESULT_CODE 
php_http_curle_option_set_cookiesession(php_http_option_
+               return FAILURE;
+       }
+       if (Z_TYPE_P(val) == IS_TRUE) {
++#if DEBUG_COOKIES
++              fprintf(stderr, "CURLOPT_COOKIELIST: SESS\n");
++#endif
+               if (CURLE_OK != curl_easy_setopt(ch, CURLOPT_COOKIELIST, 
"SESS")) {
+                       return FAILURE;
+               }
+@@ -856,9 +861,19 @@ static ZEND_RESULT_CODE 
php_http_curle_option_set_cookiestore(php_http_option_t
        } else {
                storage->cookiestore = NULL;
        }
 -      if (    CURLE_OK != curl_easy_setopt(ch, CURLOPT_COOKIEFILE, 
storage->cookiestore)
-+      if (    CURLE_OK != curl_easy_setopt(ch, CURLOPT_COOKIEFILE, 
storage->cookiestore ? storage->cookiestore : "")
-               ||      CURLE_OK != curl_easy_setopt(ch, CURLOPT_COOKIEJAR, 
storage->cookiestore)
-       ) {
+-              ||      CURLE_OK != curl_easy_setopt(ch, CURLOPT_COOKIEJAR, 
storage->cookiestore)
+-      ) {
++
++#if DEBUG_COOKIES
++      fprintf(stderr, "CURLOPT_COOKIEFILE: %s\n", cookiestore);
++#endif
++      // does NOT enable ch->data.cookies until transfer; adds to 
ch->stsate.cookielist
++      if (CURLE_OK != curl_easy_setopt(ch, CURLOPT_COOKIEFILE, 
storage->cookiestore ? storage->cookiestore : "")) {
++              return FAILURE;
++      }
++#if DEBUG_COOKIES
++      fprintf(stderr, "CURLOPT_COOKIEJAR: %s\n", cookiestore);
++#endif
++      // enables ch->data.cookies
++      if (CURLE_OK != curl_easy_setopt(ch, CURLOPT_COOKIEJAR, 
storage->cookiestore)) {
                return FAILURE;
+       }
+ 
+@@ -1919,7 +1934,7 @@ static ZEND_RESULT_CODE 
php_http_curlm_option_set_share_cookies(php_http_option_
+       return SUCCESS;
+ }
+ 
+-#if PHP_HTTP_CURL_VERSION(7,23,0)
++#if PHP_HTTP_HAVE_LIBCURL_SHARE_SSL
+ static ZEND_RESULT_CODE php_http_curlm_option_set_share_ssl(php_http_option_t 
*opt, zval *value, void *userdata)
+ {
+       php_http_client_t *client = userdata;
+@@ -1994,7 +2009,7 @@ static void 
php_http_curlm_options_init(php_http_options_t *registry)
+               opt->setter = php_http_curlm_option_set_share_cookies;
+               ZVAL_TRUE(&opt->defval);
+       }
+-#if PHP_HTTP_CURL_VERSION(7,23,0)
++#if PHP_HTTP_HAVE_LIBCURL_SHARE_SSL
+       if ((opt = php_http_option_register(registry, ZEND_STRL("share_ssl"), 
0, _IS_BOOL))) {
+               opt->setter = php_http_curlm_option_set_share_ssl;
+               ZVAL_TRUE(&opt->defval);

Reply via email to