summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--REFLECTION2
-rw-r--r--php-pecl-swoole.spec11
-rw-r--r--swoole-upstream.patch50
3 files changed, 59 insertions, 4 deletions
diff --git a/REFLECTION b/REFLECTION
index 24f96db..19e6445 100644
--- a/REFLECTION
+++ b/REFLECTION
@@ -1,4 +1,4 @@
-Extension [ <persistent> extension #114 swoole version 1.8.8 ] {
+Extension [ <persistent> extension #115 swoole version 1.8.8 ] {
- INI {
Entry [ swoole.aio_thread_num <ALL> ]
diff --git a/php-pecl-swoole.spec b/php-pecl-swoole.spec
index 503f91a..ef69ddd 100644
--- a/php-pecl-swoole.spec
+++ b/php-pecl-swoole.spec
@@ -26,8 +26,7 @@
%endif
%if 0%{?fedora} >= 22 || 0%{?rhel} >= 6
-# See https://github.com/swoole/swoole-src/issues/787
-%global with_nghttpd2 0
+%global with_nghttpd2 1
%else
%global with_nghttpd2 0
%endif
@@ -36,12 +35,14 @@
Summary: PHP's asynchronous concurrent distributed networking framework
Name: %{?sub_prefix}php-pecl-%{pecl_name}
Version: 1.8.8
-Release: 1%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
+Release: 2%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
License: BSD
Group: Development/Languages
URL: http://pecl.php.net/package/%{pecl_name}
Source0: http://pecl.php.net/get/%{pecl_name}-%{version}.tgz
+Patch0: %{pecl_name}-upstream.patch
+
BuildRequires: %{?scl_prefix}php-devel >= 5.3.10
BuildRequires: %{?scl_prefix}php-pear
BuildRequires: %{?scl_prefix}php-sockets
@@ -136,6 +137,7 @@ sed -e 's/role="test"/role="src"/' \
cd NTS
+%patch0 -p1 -b .upstream
# Sanity check, really often broken
extver=$(sed -n '/#define PHP_SWOOLE_VERSION/{s/.* "//;s/".*$//;p}' php_swoole.h)
@@ -270,6 +272,9 @@ cd ../ZTS
%changelog
+* Thu Jul 28 2016 Remi Collet <remi@fedoraproject.org> - 1.8.8-2
+- add upstream patch and add back --enable-http2 build option
+
* Thu Jul 28 2016 Remi Collet <remi@fedoraproject.org> - 1.8.8-1
- Update to 1.8.8
- drop --enable-http2 build option (broken)
diff --git a/swoole-upstream.patch b/swoole-upstream.patch
new file mode 100644
index 0000000..fa98e35
--- /dev/null
+++ b/swoole-upstream.patch
@@ -0,0 +1,50 @@
+From 8b86b44ada511935dd1fb1bd7a2ed3d9c2489f0a Mon Sep 17 00:00:00 2001
+From: matyhtf <mikan.tenny@gmail.com>
+Date: Thu, 28 Jul 2016 13:12:58 +0800
+Subject: [PATCH] fixed #787, compile failed with --enable-http2
+
+---
+ swoole_http_v2_server.c | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/swoole_http_v2_server.c b/swoole_http_v2_server.c
+index bcbea68..b04ffd7 100644
+--- a/swoole_http_v2_server.c
++++ b/swoole_http_v2_server.c
+@@ -30,7 +30,7 @@ static sw_inline void http2_add_header(nghttp2_nv *headers, char *k, int kl, cha
+ headers->valuelen = vl;
+ }
+
+-static void http2_onRequest(http_context *ctx TSRMLS_DC)
++static sw_inline void http2_onRequest(http_context *ctx, int server_fd TSRMLS_DC)
+ {
+ zval *retval;
+ zval **args[2];
+@@ -41,7 +41,8 @@ static void http2_onRequest(http_context *ctx TSRMLS_DC)
+ args[0] = &zrequest_object;
+ args[1] = &zresponse_object;
+
+- if (sw_call_user_function_ex(EG(function_table), NULL, php_sw_http_server_callbacks[HTTP_CALLBACK_onRequest], &retval, 2, args, 0, NULL TSRMLS_CC) == FAILURE)
++ zval *zcallback = php_swoole_server_get_callback(SwooleG.serv, server_fd, SW_SERVER_CB_onRequest);
++ if (sw_call_user_function_ex(EG(function_table), NULL, zcallback, &retval, 2, args, 0, NULL TSRMLS_CC) == FAILURE)
+ {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "onRequest handler error");
+ }
+@@ -509,7 +510,7 @@ int swoole_http2_onFrame(swoole_http_client *client, swEventData *req)
+
+ if (flags & SW_HTTP2_FLAG_END_STREAM)
+ {
+- http2_onRequest(ctx TSRMLS_CC);
++ http2_onRequest(ctx, req->info.from_fd TSRMLS_CC);
+ }
+ else
+ {
+@@ -557,7 +558,7 @@ int swoole_http2_onFrame(swoole_http_client *client, swEventData *req)
+ swoole_php_fatal_error(E_WARNING, "parse multipart body failed.");
+ }
+ }
+- http2_onRequest(ctx TSRMLS_CC);
++ http2_onRequest(ctx, req->info.from_fd TSRMLS_CC);
+ }
+ }
+ else if (type == SW_HTTP2_TYPE_PING)