diff options
author | Remi Collet <remi@remirepo.net> | 2024-07-11 09:32:19 +0200 |
---|---|---|
committer | Remi Collet <remi@php.net> | 2024-07-11 09:32:19 +0200 |
commit | 7ab3311e96b92a12e748f7e8b673d43d3f294da2 (patch) | |
tree | f4874dda764cfe79fa6fec254421f50f289324d0 /redis-upstream.patch | |
parent | b4c70ad503eabd82414c4c719c57b3829b27d086 (diff) |
add upstream patch for PHP 8.4
allow to build with valkey
Diffstat (limited to 'redis-upstream.patch')
-rw-r--r-- | redis-upstream.patch | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/redis-upstream.patch b/redis-upstream.patch new file mode 100644 index 0000000..03bd34f --- /dev/null +++ b/redis-upstream.patch @@ -0,0 +1,116 @@ +From a51215ce2b22bcd1f506780c35b6833471e0b8cb Mon Sep 17 00:00:00 2001 +From: michael-grunder <michael.grunder@gmail.com> +Date: Mon, 18 Mar 2024 14:42:35 -0700 +Subject: [PATCH] Update random includes. + +PHP 8.4 has some breaking changes with respect to where PHP's random methods and +helpers are. This commit fixes those issues while staying backward compatible. + +Fixes #2463 +--- + backoff.c | 12 ++++++------ + library.c | 7 ++++++- + redis.c | 6 +++++- + 3 files changed, 17 insertions(+), 8 deletions(-) + +diff --git a/backoff.c b/backoff.c +index d0961fcfaf..1be04a8fe8 100644 +--- a/backoff.c ++++ b/backoff.c +@@ -1,14 +1,14 @@ + #include "common.h" + ++#if PHP_VERSION_ID < 80400 + #include <ext/standard/php_rand.h> +- +-#if PHP_VERSION_ID >= 70100 +-#include <ext/standard/php_mt_rand.h> + #else ++#include <ext/random/php_random.h> ++#endif ++ ++#if PHP_VERSION_ID < 70100 + static zend_long php_mt_rand_range(zend_long min, zend_long max) { +- zend_long number = php_rand(); +- RAND_RANGE(number, min, max, PHP_RAND_MAX); +- return number; ++ return min + php_rand() % (max - min + 1) + } + #endif + +diff --git a/library.c b/library.c +index 3d65c8529d..f81556a9ed 100644 +--- a/library.c ++++ b/library.c +@@ -56,9 +56,14 @@ + #include <ext/json/php_json.h> + #endif + +-#include <ext/standard/php_rand.h> + #include <ext/hash/php_hash.h> + ++#if PHP_VERSION_ID < 80400 ++#include <ext/standard/php_rand.h> ++#else ++#include <ext/random/php_random.h> ++#endif ++ + #define UNSERIALIZE_NONE 0 + #define UNSERIALIZE_KEYS 1 + #define UNSERIALIZE_VALS 2 +diff --git a/redis.c b/redis.c +index ec6f65d2ed..2330bf7edf 100644 +--- a/redis.c ++++ b/redis.c +@@ -27,12 +27,16 @@ + #include "redis_cluster.h" + #include "redis_commands.h" + #include "redis_sentinel.h" +-#include <standard/php_random.h> + #include <ext/spl/spl_exceptions.h> + #include <zend_exceptions.h> + #include <ext/standard/info.h> + #include <ext/hash/php_hash.h> + ++#if PHP_VERSION_ID < 80400 ++#include <ext/standard/php_random.h> ++#else ++#include <ext/random/php_random.h> ++#endif + + #ifdef PHP_SESSION + #include <ext/session/php_session.h> +From c139de3abac1dd33b97ef0de5af41b6e3a78f7ab Mon Sep 17 00:00:00 2001 +From: michael-grunder <michael.grunder@gmail.com> +Date: Sat, 1 Jun 2024 13:09:30 -0700 +Subject: [PATCH] We don't need to use a ranom value for our ECHO liveness + challenge. + +A microsecond resolution timestamp combined with a monotonically +incremented counter should be sufficient. + +This also fixes PHP 8.4 compilation as PHP 8.4 doesn't seem to have +`php_rand()`. +--- + library.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/library.c b/library.c +index ce0cbda26..42a132c4c 100644 +--- a/library.c ++++ b/library.c +@@ -2886,11 +2886,13 @@ redis_sock_create(char *host, int host_len, int port, + } + + static int redis_uniqid(char *buf, size_t buflen) { ++ static unsigned long counter = 0; + struct timeval tv; ++ + gettimeofday(&tv, NULL); + + return snprintf(buf, buflen, "phpredis:%08lx%05lx:%08lx", +- (long)tv.tv_sec, (long)tv.tv_usec, (long)php_rand()); ++ (long)tv.tv_sec, (long)tv.tv_usec, counter++); + } + + static int redis_stream_liveness_check(php_stream *stream) { |