summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <remi@remirepo.net>2021-09-27 15:21:40 +0200
committerRemi Collet <remi@remirepo.net>2021-09-27 15:21:40 +0200
commitb505ac9a6deaf4a50c8cb49da0f261bf9a8d99cb (patch)
tree8f72d033c34f2a00d92f5abe3a7e07c3c5015215
parentd83dde634f9c8c0af514decf191c54ea98545416 (diff)
add patch for PHP 8 from
https://github.com/php/pecl-tools-stomp/pull/14
-rw-r--r--php-pecl-stomp.spec46
-rw-r--r--stomp-php8.patch1639
2 files changed, 1665 insertions, 20 deletions
diff --git a/php-pecl-stomp.spec b/php-pecl-stomp.spec
index 2fc9a84..5f16bb2 100644
--- a/php-pecl-stomp.spec
+++ b/php-pecl-stomp.spec
@@ -1,6 +1,6 @@
# remimrepo/fedora spec file for php-pecl-stomp
#
-# Copyright (c) 2014-2019 Remi Collet
+# Copyright (c) 2014-2021 Remi Collet
# License: CC-BY-SA
# http://creativecommons.org/licenses/by-sa/4.0/
#
@@ -16,12 +16,15 @@
Summary: Stomp client extension
Name: %{?scl_prefix}php-pecl-%{pecl_name}
Version: 2.0.2
-Release: 5%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}
+Release: 6%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}
License: PHP
-URL: http://pecl.php.net/package/%{pecl_name}
-Source0: http://pecl.php.net/get/%{pecl_name}-%{version}.tgz
+URL: https://pecl.php.net/package/%{pecl_name}
+Source0: https://pecl.php.net/get/%{pecl_name}-%{version}.tgz
+
+Patch0: %{pecl_name}-php8.patch
BuildRequires: %{?dtsprefix}gcc
+BuildRequires: make
BuildRequires: %{?scl_prefix}php-devel > 7
BuildRequires: %{?scl_prefix}php-pear
BuildRequires: openssl-devel
@@ -39,30 +42,20 @@ Provides: %{?scl_prefix}php-pecl-%{pecl_name} = %{version}-%{rele
Provides: %{?scl_prefix}php-pecl-%{pecl_name}%{?_isa} = %{version}-%{release}
%endif
-%if "%{?vendor}" == "Remi Collet" && 0%{!?scl:1} && 0%{?rhel}
+%if "%{?packager}" == "Remi Collet" && 0%{!?scl:1} && 0%{?rhel}
# Other third party repo stuff
-%if "%{php_version}" > "7.1"
-Obsoletes: php71u-pecl-%{pecl_name} <= %{version}
-Obsoletes: php71w-pecl-%{pecl_name} <= %{version}
-%endif
-%if "%{php_version}" > "7.2"
-Obsoletes: php72u-pecl-%{pecl_name} <= %{version}
-Obsoletes: php72w-pecl-%{pecl_name} <= %{version}
-%endif
%if "%{php_version}" > "7.3"
Obsoletes: php73-pecl-%{pecl_name} <= %{version}
-Obsoletes: php73w-pecl-%{pecl_name} <= %{version}
%endif
%if "%{php_version}" > "7.4"
Obsoletes: php74-pecl-%{pecl_name} <= %{version}
-Obsoletes: php74w-pecl-%{pecl_name} <= %{version}
%endif
+%if "%{php_version}" > "8.0"
+Obsoletes: php80-pecl-%{pecl_name} <= %{version}
+%endif
+%if "%{php_version}" > "8.1"
+Obsoletes: php81-pecl-%{pecl_name} <= %{version}
%endif
-
-%if 0%{?fedora} < 20 && 0%{?rhel} < 7
-# Filter shared private
-%{?filter_provides_in: %filter_provides_in %{_libdir}/.*\.so$}
-%{?filter_setup}
%endif
@@ -86,6 +79,8 @@ sed -e 's/role="test"/role="src"/' \
-i package.xml
cd NTS
+%patch0 -p1 -b .pr14
+
# Sanity check, really often broken
extver=$(sed -n '/#define PHP_STOMP_VERSION/{s/.* "//;s/".*$//;p}' php_stomp.h)
if test "x${extver}" != "x%{version}%{?versuf}"; then
@@ -202,6 +197,13 @@ fi
--modules | grep -i %{pecl_name}
%endif
+cd NTS
+# need a server, such as rabbitmq-server
+: Run upstream test suite
+TEST_PHP_EXECUTABLE=%{__php} \
+TEST_PHP_ARGS="-n -d extension=%{buildroot}%{php_extdir}/%{pecl_name}.so" \
+%{__php} -n run-tests.php -q --show-diff
+
%files
%{?_licensedir:%license NTS/LICENSE}
@@ -218,6 +220,10 @@ fi
%changelog
+* Mon Sep 27 2021 Remi Collet <remi@remirepo.net> - 2.0.2-6
+- add patch for PHP 8 from
+ https://github.com/php/pecl-tools-stomp/pull/14
+
* Tue Sep 03 2019 Remi Collet <remi@remirepo.net> - 2.0.2-5
- rebuild for 7.4.0RC1
diff --git a/stomp-php8.patch b/stomp-php8.patch
new file mode 100644
index 0000000..46b1f09
--- /dev/null
+++ b/stomp-php8.patch
@@ -0,0 +1,1639 @@
+From 7b066620afe3368662e316e86242d0087de8a44e Mon Sep 17 00:00:00 2001
+From: Peter Kokot <peterkokot@gmail.com>
+Date: Sat, 30 Jun 2018 16:44:34 +0200
+Subject: [PATCH] Remove unused Git attributes ident
+
+The $Id$ keywords were used in Subversion where they can be substituted
+with filename, last revision number change, last changed date, and last
+user who changed it.
+
+In Git this functionality is different and can be done with Git attribute
+ident. These need to be defined manually for each file in the
+.gitattributes file and are afterwards replaced with 40-character
+hexadecimal blob object name which is based only on the particular file
+contents.
+
+This patch simplifes handling of $Id$ keywords by removing them since
+they are not used anymore.
+---
+ config.m4 | 1 -
+ config.w32 | 1 -
+ php_stomp.c | 2 --
+ php_stomp.h | 2 --
+ stomp.c | 2 --
+ stomp.h | 2 --
+ 6 files changed, 10 deletions(-)
+
+diff --git a/config.m4 b/config.m4
+index 8a9c36b..f700f27 100644
+--- a/config.m4
++++ b/config.m4
+@@ -1,4 +1,3 @@
+-dnl $Id$
+ dnl config.m4 for extension stomp
+
+ PHP_ARG_ENABLE(stomp, whether to enable stomp support,
+diff --git a/config.w32 b/config.w32
+index 091e00b..ba3096b 100644
+--- a/config.w32
++++ b/config.w32
+@@ -1,4 +1,3 @@
+-// $Id$
+ // vim:ft=javascript
+
+ ARG_ENABLE("stomp", "enable stomp support", "no");
+diff --git a/php_stomp.c b/php_stomp.c
+index 9442011..080298f 100644
+--- a/php_stomp.c
++++ b/php_stomp.c
+@@ -16,8 +16,6 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id$ */
+-
+ #ifdef HAVE_CONFIG_H
+ #include "config.h"
+ #endif
+diff --git a/php_stomp.h b/php_stomp.h
+index b799119..805b9f6 100644
+--- a/php_stomp.h
++++ b/php_stomp.h
+@@ -16,8 +16,6 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id$ */
+-
+ #ifndef PHP_STOMP_H
+ #define PHP_STOMP_H
+
+diff --git a/stomp.c b/stomp.c
+index 2f71606..d83a4e6 100644
+--- a/stomp.c
++++ b/stomp.c
+@@ -16,8 +16,6 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id$ */
+-
+ #ifdef HAVE_CONFIG_H
+ #include "config.h"
+ #endif
+diff --git a/stomp.h b/stomp.h
+index a47787f..19bd8dd 100644
+--- a/stomp.h
++++ b/stomp.h
+@@ -16,8 +16,6 @@
+ +----------------------------------------------------------------------+
+ */
+
+-/* $Id$ */
+-
+ #ifndef _STOMP_H_
+ #define _STOMP_H_
+
+
+From 684706756972bb75fec025ec9d66c3fc99ed5199 Mon Sep 17 00:00:00 2001
+From: Peter Kokot <peterkokot@gmail.com>
+Date: Wed, 3 Oct 2018 09:43:57 +0200
+Subject: [PATCH] Trim trailing whitespace
+
+---
+ LICENSE | 26 ++++-----
+ README | 2 +-
+ TODO | 2 +-
+ config.m4 | 2 +-
+ doc/classes.php | 48 ++++++++--------
+ doc/functions.php | 44 +++++++--------
+ php_stomp.c | 94 ++++++++++++++++----------------
+ php_stomp.h | 4 +-
+ stomp.h | 4 +-
+ tests/002-version.phpt | 2 +-
+ tests/003-connect/001.phpt | 2 +-
+ tests/003-connect/002.phpt | 4 +-
+ tests/003-connect/003.phpt | 2 +-
+ tests/004-getSessionId/001.phpt | 4 +-
+ tests/005-close/001.phpt | 4 +-
+ tests/005-close/002.phpt | 4 +-
+ tests/006-send/001.phpt | 2 +-
+ tests/006-send/002.phpt | 2 +-
+ tests/006-send/003.phpt | 2 +-
+ tests/007-subscribe/001.phpt | 2 +-
+ tests/008-unsubscribe/001.phpt | 2 +-
+ tests/009-readFrame/001.phpt | 2 +-
+ tests/009-readFrame/003.phpt | 4 +-
+ tests/009-readFrame/004.phpt | Bin 433 -> 432 bytes
+ tests/009-readFrame/006.phpt | 2 +-
+ tests/010-timeout/001.phpt | 4 +-
+ tests/010-timeout/002.phpt | 4 +-
+ tests/011-commit/001.phpt | 2 +-
+ tests/skipif.inc | 2 +-
+ 29 files changed, 139 insertions(+), 139 deletions(-)
+
+diff --git a/LICENSE b/LICENSE
+index 6059c80..92ee907 100644
+--- a/LICENSE
++++ b/LICENSE
+@@ -1,7 +1,7 @@
+---------------------------------------------------------------------
++--------------------------------------------------------------------
+ The PHP License, version 3.01
+ Copyright (c) 1999 - 2014 The PHP Group. All rights reserved.
+---------------------------------------------------------------------
++--------------------------------------------------------------------
+
+ Redistribution and use in source and binary forms, with or without
+ modification, is permitted provided that the following conditions
+@@ -9,22 +9,22 @@ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+-
++
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+-
++
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior written permission. For
+ written permission, please contact group@php.net.
+-
++
+ 4. Products derived from this software may not be called "PHP", nor
+ may "PHP" appear in their name, without prior written permission
+ from group@php.net. You may indicate that your software works in
+ conjunction with PHP by saying "Foo for PHP" instead of calling
+ it "PHP Foo" or "phpfoo"
+-
++
+ 5. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+@@ -41,27 +41,27 @@ are met:
+ "This product includes PHP software, freely available from
+ <http://www.php.net/software/>".
+
+-THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
++THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
++THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+-DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
++DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
++INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+
+---------------------------------------------------------------------
++--------------------------------------------------------------------
+
+ This software consists of voluntary contributions made by many
+ individuals on behalf of the PHP Group.
+
+ The PHP Group can be contacted via Email at group@php.net.
+
+-For more information on the PHP Group and the PHP project,
++For more information on the PHP Group and the PHP project,
+ please see <http://www.php.net>.
+
+ PHP includes the Zend Engine, freely available at
+diff --git a/README b/README
+index 6511d8b..a0c1953 100644
+--- a/README
++++ b/README
+@@ -1,7 +1,7 @@
+ stomp
+ =====
+
+-This extension allows php applications to communicate with any Stomp compliant Message Broker(s) through easy object
++This extension allows php applications to communicate with any Stomp compliant Message Broker(s) through easy object
+ oriented and procedural interfaces.
+
+ This extension currently implements STOMP 1.0 protocol: https://stomp.github.io/stomp-specification-1.0.html
+diff --git a/config.m4 b/config.m4
+index f700f27..cbeb71b 100644
+--- a/config.m4
++++ b/config.m4
+@@ -16,7 +16,7 @@ if test "$PHP_STOMP" != "no"; then
+ [
+ AC_DEFINE(HAVE_STOMP_SSL,1,[ ])
+ ], [
+- AC_MSG_ERROR([OpenSSL libraries not found.
++ AC_MSG_ERROR([OpenSSL libraries not found.
+
+ Check the path given to --with-openssl-dir and output in config.log)
+ ])
+diff --git a/doc/classes.php b/doc/classes.php
+index 0cfc554..06c50a0 100644
+--- a/doc/classes.php
++++ b/doc/classes.php
+@@ -4,7 +4,7 @@ class Stomp {
+
+ /**
+ * Connect to server
+- *
++ *
+ * @param string $broker The broker URI
+ * @param string $username The username
+ * @param string $password The password
+@@ -15,7 +15,7 @@ public function __construct($broker = null, $username = null, $password = null,
+
+ /**
+ * Get the current stomp session ID
+- *
++ *
+ * @return string stomp session ID if it exists, or FALSE otherwise
+ */
+ public function getSessionId() {
+@@ -24,28 +24,28 @@ public function getSessionId() {
+ /**
+ * Close stomp connection
+ *
+- * @return boolean TRUE on success, or FALSE on failure
++ * @return boolean TRUE on success, or FALSE on failure
+ */
+ public function disconnect() {
+ }
+
+- /**
++ /**
+ * Sends a message to a destination in the messaging system
+- *
+- * @param string $destination indicates where to send the message
++ *
++ * @param string $destination indicates where to send the message
+ * @param string|StompFrame $msg message to be sent
+ * @param array $headers additional headers (example: receipt).
+- * @return boolean TRUE on success, or FALSE on failure
++ * @return boolean TRUE on success, or FALSE on failure
+ */
+ public function send($destination, $msg, array $headers = array()) {
+ }
+
+ /**
+ * Register to listen to a given destination
+- *
+- * @param string $destination indicates which destination to subscribe to
++ *
++ * @param string $destination indicates which destination to subscribe to
+ * @param array $headers additional headers (example: receipt).
+- * @return boolean TRUE on success, or FALSE on failure
++ * @return boolean TRUE on success, or FALSE on failure
+ */
+ public function subscribe($destination, array $headers = array()) {
+ }
+@@ -55,14 +55,14 @@ public function subscribe($destination, array $headers = array()) {
+ *
+ * @param string $destination indicates which subscription to remove
+ * @param array $headers additional headers (example: receipt).
+- * @return boolean TRUE on success, or FALSE on failure
++ * @return boolean TRUE on success, or FALSE on failure
+ */
+ public function unsubscribe($destination, array $headers = array()) {
+ }
+
+ /**
+ * Indicate whether or not there is a frame ready to read
+- *
++ *
+ * @return boolean TRUE if there is one, or FALSE otherwise
+ */
+ public function hasFrame() {
+@@ -81,7 +81,7 @@ public function readFrame($className = 'stompFrame') {
+ * Start a transaction
+ *
+ * @param string $transaction_id transaction id
+- * @return boolean TRUE on success, or FALSE on failure
++ * @return boolean TRUE on success, or FALSE on failure
+ */
+ public function begin($transaction_id) {
+ }
+@@ -90,26 +90,26 @@ public function begin($transaction_id) {
+ * Commit a transaction in progress
+ *
+ * @param string $transaction_id transaction id
+- * @return boolean TRUE on success, or FALSE on failure
++ * @return boolean TRUE on success, or FALSE on failure
+ */
+- public function commit($transaction_id) {
++ public function commit($transaction_id) {
+ }
+
+ /**
+ * Roll back a transaction in progress
+ *
+ * @param string $transaction_id transaction id
+- * @return boolean TRUE on success, or FALSE on failure
++ * @return boolean TRUE on success, or FALSE on failure
+ */
+ public function abort($transaction_id) {
+ }
+
+ /**
+ * Acknowledge consumption of a message from a subscription using client acknowledgment
+- *
++ *
+ * @param string|StompFrame $msg message/messageId to be acknowledged
+ * @param array $headers additional headers (example: receipt).
+- * @return boolean TRUE on success, or FALSE on failure
++ * @return boolean TRUE on success, or FALSE on failure
+ */
+ public function ack($msg, array $headers = array()) {
+ }
+@@ -124,7 +124,7 @@ public function error() {
+
+ /**
+ * Set timeout
+- *
++ *
+ * @param int $seconds the seconds part of the timeout to be set
+ * @param int $microseconds the microseconds part of the timeout to be set
+ * @return void
+@@ -134,16 +134,16 @@ public function setTimeout($seconds, $microseconds = 0) {
+
+ /**
+ * Get timeout
+- *
++ *
+ * @return array Array with timeout informations
+ */
+ public function getTimeout() {
+- }
++ }
+
+ }
+
+ class StompFrame {
+-
++
+ /**
+ * Frame Command
+ * @var String
+@@ -164,11 +164,11 @@ class StompFrame {
+ }
+
+ class StompException extends Exception {
+-
++
+ /**
+ * Get the stomp server error details
+ *
+- * @return string
++ * @return string
+ */
+ public function getDetails() {
+ }
+diff --git a/doc/functions.php b/doc/functions.php
+index 98486fc..57ae424 100644
+--- a/doc/functions.php
++++ b/doc/functions.php
+@@ -2,7 +2,7 @@
+
+ /**
+ * Get the current version of the stomp extension
+- *
++ *
+ * @return string version
+ */
+ function stomp_version() {
+@@ -10,19 +10,19 @@ function stomp_version() {
+
+ /**
+ * Connect to server
+- *
++ *
+ * @param string $broker broker URI
+ * @param string $username The username
+ * @param string $password The password
+ * @param array $headers additional headers (example: receipt).
+- * @return Ressource stomp connection identifier on success, or FALSE on failure
++ * @return Ressource stomp connection identifier on success, or FALSE on failure
+ */
+ function stomp_connect($broker = null, $username = null, $password = null, array $headers = array()) {
+ }
+
+ /**
+ * Get the current stomp session ID
+- *
++ *
+ * @param ressource $link identifier returned by stomp_connect
+ * @return string stomp session ID if it exists, or FALSE otherwise
+ */
+@@ -33,30 +33,30 @@ function stomp_get_session_id($link) {
+ * Close stomp connection
+ *
+ * @param ressource $link identifier returned by stomp_connect
+- * @return boolean TRUE on success, or FALSE on failure
++ * @return boolean TRUE on success, or FALSE on failure
+ */
+ function stomp_close($link) {
+ }
+
+-/**
++/**
+ * Sends a message to a destination in the messaging system
+- *
++ *
+ * @param ressource $link identifier returned by stomp_connect
+- * @param string $destination indicates where to send the message
++ * @param string $destination indicates where to send the message
+ * @param string|StompFrame $msg message to be sent
+ * @param array $headers additional headers (example: receipt).
+- * @return boolean TRUE on success, or FALSE on failure
++ * @return boolean TRUE on success, or FALSE on failure
+ */
+ function stomp_send($link, $destination, $msg, array $headers = array()) {
+ }
+
+ /**
+ * Register to listen to a given destination
+- *
++ *
+ * @param ressource $link identifier returned by stomp_connect
+- * @param string $destination indicates which destination to subscribe to
++ * @param string $destination indicates which destination to subscribe to
+ * @param array $headers additional headers (example: receipt).
+- * @return boolean TRUE on success, or FALSE on failure
++ * @return boolean TRUE on success, or FALSE on failure
+ */
+ function stomp_subscribe($link, $destination, array $headers = array()) {
+ }
+@@ -67,14 +67,14 @@ function stomp_subscribe($link, $destination, array $headers = array()) {
+ * @param ressource $link identifier returned by stomp_connect
+ * @param string $destination indicates which subscription to remove
+ * @param array $headers additional headers (example: receipt).
+- * @return boolean TRUE on success, or FALSE on failure
++ * @return boolean TRUE on success, or FALSE on failure
+ */
+ function stomp_unsubscribe($link, $destination, array $headers = array()) {
+ }
+
+ /**
+ * Indicate whether or not there is a frame ready to read
+- *
++ *
+ * @param ressource $link identifier returned by stomp_connect
+ * @return boolean TRUE if there is one, or FALSE otherwise
+ */
+@@ -95,7 +95,7 @@ function stomp_read_frame($link) {
+ *
+ * @param ressource $link identifier returned by stomp_connect
+ * @param string $transaction_id transaction id
+- * @return boolean TRUE on success, or FALSE on failure
++ * @return boolean TRUE on success, or FALSE on failure
+ */
+ function stomp_begin($link, $transaction_id) {
+ }
+@@ -105,9 +105,9 @@ function stomp_begin($link, $transaction_id) {
+ *
+ * @param ressource $link identifier returned by stomp_connect
+ * @param string $transaction_id transaction id
+- * @return boolean TRUE on success, or FALSE on failure
++ * @return boolean TRUE on success, or FALSE on failure
+ */
+-function stomp_commit($link, $transaction_id) {
++function stomp_commit($link, $transaction_id) {
+ }
+
+ /**
+@@ -115,18 +115,18 @@ function stomp_commit($link, $transaction_id) {
+ *
+ * @param ressource $link identifier returned by stomp_connect
+ * @param string $transaction_id transaction id
+- * @return boolean TRUE on success, or FALSE on failure
++ * @return boolean TRUE on success, or FALSE on failure
+ */
+ function stomp_abort($link, $transaction_id) {
+ }
+
+ /**
+ * Acknowledge consumption of a message from a subscription using client acknowledgment
+- *
++ *
+ * @param ressource $link identifier returned by stomp_connect
+ * @param string|StompFrame $msg message/messageId to be acknowledged
+ * @param array $headers additional headers (example: receipt).
+- * @return boolean TRUE on success, or FALSE on failure
++ * @return boolean TRUE on success, or FALSE on failure
+ */
+ function stomp_ack($link, $msg, array $headers = array()) {
+ }
+@@ -142,7 +142,7 @@ function stomp_error($link) {
+
+ /**
+ * Set timeout
+- *
++ *
+ * @param ressource $link identifier returned by stomp_connect
+ * @param int $seconds the seconds part of the timeout to be set
+ * @param int $microseconds the microseconds part of the timeout to be set
+@@ -153,7 +153,7 @@ function stomp_set_timeout($link, $seconds, $microseconds = 0) {
+
+ /**
+ * Get timeout
+- *
++ *
+ * @param ressource $link identifier returned by stomp_connect
+ * @return array Array with timeout informations
+ */
+diff --git a/php_stomp.c b/php_stomp.c
+index 080298f..0dcefed 100644
+--- a/php_stomp.c
++++ b/php_stomp.c
+@@ -83,7 +83,7 @@
+ STOMP_G(error_msg) = estrdup(msg); \
+ if (stomp_object) { \
+ zend_throw_exception_ex(stomp_ce_exception, errno , msg); \
+- }
++ }
+
+ #define STOMP_ERROR_DETAILS(errno, msg, details) \
+ STOMP_G(error_no) = errno; \
+@@ -157,7 +157,7 @@ ZEND_ARG_ARRAY_INFO(0, headers, 1)
+ ZEND_END_ARG_INFO()
+
+ ZEND_BEGIN_ARG_INFO_EX(stomp_readframe_args, 0, 0, 1)
+-ZEND_ARG_INFO(0, link)
++ZEND_ARG_INFO(0, link)
+ ZEND_ARG_INFO(0, class_name)
+ ZEND_END_ARG_INFO()
+
+@@ -213,7 +213,7 @@ ZEND_BEGIN_ARG_INFO_EX(stomp_frame_construct_args, 0, 0, 0)
+ ZEND_ARG_INFO(0, command)
+ ZEND_ARG_ARRAY_INFO(0, headers, 1)
+ ZEND_ARG_INFO(0, body)
+-ZEND_END_ARG_INFO()
++ZEND_END_ARG_INFO()
+ /* }}} */
+
+ /* {{{ stomp_functions */
+@@ -267,7 +267,7 @@ static zend_function_entry stomp_frame_methods[] = {
+ PHP_ME(stompframe, __construct, stomp_frame_construct_args, ZEND_ACC_PUBLIC)
+ {NULL, NULL, NULL}
+ };
+-/* }}} */
++/* }}} */
+
+ /* {{{ stomp_exception_methods[] */
+ static zend_function_entry stomp_exception_methods[] = {
+@@ -283,7 +283,7 @@ zend_module_entry stomp_module_entry = {
+ stomp_functions,
+ PHP_MINIT(stomp),
+ PHP_MSHUTDOWN(stomp),
+- PHP_RINIT(stomp),
++ PHP_RINIT(stomp),
+ PHP_RSHUTDOWN(stomp),
+ PHP_MINFO(stomp),
+ PHP_STOMP_VERSION,
+@@ -330,9 +330,9 @@ ZEND_GET_MODULE(stomp)
+ /* {{{ constructor/destructor */
+ static void stomp_send_disconnect(stomp_t *stomp)
+ {
+- stomp_frame_t frame = {0};
++ stomp_frame_t frame = {0};
+ INIT_FRAME(frame, "DISCONNECT");
+-
++
+ stomp_send(stomp, &frame );
+ CLEAR_FRAME(frame);
+ }
+@@ -342,7 +342,7 @@ static void php_destroy_stomp_res(zend_resource *rsrc)
+ stomp_t *stomp = (stomp_t *) rsrc->ptr;
+ stomp_send_disconnect(stomp );
+ stomp_close(stomp);
+-}
++}
+
+ static zend_object *php_stomp_new(zend_class_entry *ce)
+ {
+@@ -350,7 +350,7 @@ static zend_object *php_stomp_new(zend_class_entry *ce)
+
+ intern = (stomp_object_t *) ecalloc(1, sizeof(stomp_object_t) + zend_object_properties_size(ce));
+ intern->stomp = NULL;
+-
++
+ zend_object_std_init(&intern->std, ce );
+
+ intern->std.handlers = &stomp_obj_handlers;
+@@ -381,7 +381,7 @@ PHP_MINIT_FUNCTION(stomp)
+ /* Properties */
+ zend_declare_property_null(stomp_ce_frame, "command", sizeof("command")-1, ZEND_ACC_PUBLIC );
+ zend_declare_property_null(stomp_ce_frame, "headers", sizeof("headers")-1, ZEND_ACC_PUBLIC );
+- zend_declare_property_null(stomp_ce_frame, "body", sizeof("body")-1, ZEND_ACC_PUBLIC );
++ zend_declare_property_null(stomp_ce_frame, "body", sizeof("body")-1, ZEND_ACC_PUBLIC );
+
+ /* Register StompException class */
+ INIT_CLASS_ENTRY(ce, PHP_STOMP_EXCEPTION_CLASSNAME, stomp_exception_methods);
+@@ -399,7 +399,7 @@ PHP_MINIT_FUNCTION(stomp)
+
+ /* {{{ PHP_MSHUTDOWN_FUNCTION */
+ PHP_MSHUTDOWN_FUNCTION(stomp)
+-{
++{
+ /* Unregister INI entries */
+ UNREGISTER_INI_ENTRIES();
+ return SUCCESS;
+@@ -443,9 +443,9 @@ PHP_MINFO_FUNCTION(stomp)
+ }
+ /* }}} */
+
+-/* {{{ proto string stomp_version()
++/* {{{ proto string stomp_version()
+ Get stomp extension version */
+-PHP_FUNCTION(stomp_version)
++PHP_FUNCTION(stomp_version)
+ {
+ RETURN_STRINGL(PHP_STOMP_VERSION, sizeof(PHP_STOMP_VERSION)-1);
+ }
+@@ -461,9 +461,9 @@ PHP_FUNCTION(stomp_connect)
+ zend_string *broker = NULL, *username = NULL, *password = NULL;
+ php_url *url_parts;
+
+-#ifdef HAVE_STOMP_SSL
++#ifdef HAVE_STOMP_SSL
+ int use_ssl = 0;
+-#endif
++#endif
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() , "|SSSa!", &broker, &username, &password, &headers) == FAILURE) {
+ return;
+@@ -478,7 +478,7 @@ PHP_FUNCTION(stomp_connect)
+ }
+
+ url_parts = php_url_parse_ex(ZSTR_VAL(broker), ZSTR_LEN(broker));
+-
++
+ if (!url_parts || !url_parts->host) {
+ STOMP_ERROR(0, PHP_STOMP_ERR_INVALID_BROKER_URI);
+ zend_string_release(broker);
+@@ -495,7 +495,7 @@ PHP_FUNCTION(stomp_connect)
+ STOMP_ERROR(0, "SSL DISABLED");
+ php_url_free(url_parts);
+ return;
+-#endif
++#endif
+ } else if (strcmp(STOMP_URL_STR(url_parts->scheme), "tcp") != 0) {
+ STOMP_ERROR(0, PHP_STOMP_ERR_INVALID_BROKER_URI_SCHEME);
+ php_url_free(url_parts);
+@@ -507,7 +507,7 @@ PHP_FUNCTION(stomp_connect)
+
+ #if HAVE_STOMP_SSL
+ stomp->options.use_ssl = use_ssl;
+-#endif
++#endif
+
+ stomp->options.read_timeout_sec = STOMP_G(read_timeout_sec);
+ stomp->options.read_timeout_usec = STOMP_G(read_timeout_usec);
+@@ -522,7 +522,7 @@ PHP_FUNCTION(stomp_connect)
+ stomp_frame_t *res;
+ stomp_frame_t frame = {0};
+ int send_status;
+-
++
+ INIT_FRAME(frame, "CONNECT");
+ if (!username) {
+ username = zend_string_init(STOMP_G(default_username), strlen(STOMP_G(default_username)), 0);
+@@ -548,7 +548,7 @@ PHP_FUNCTION(stomp_connect)
+ ZVAL_STR(&rv, zend_string_copy(password));
+ zend_hash_str_add(frame.headers, "passcode", sizeof("passcode"), &rv);
+ }
+-
++
+ zend_string_release(username);
+ zend_string_release(password);
+
+@@ -607,7 +607,7 @@ PHP_FUNCTION(stomp_connect)
+ i_obj->stomp = stomp;
+ RETURN_TRUE;
+ }
+- }
++ }
+ } else {
+ STOMP_ERROR_DETAILS(0, stomp->error, stomp->error_details);
+ }
+@@ -617,9 +617,9 @@ PHP_FUNCTION(stomp_connect)
+ }
+ /* }}} */
+
+-/* {{{ proto string stomp_connect_error()
++/* {{{ proto string stomp_connect_error()
+ Get the last connection error */
+-PHP_FUNCTION(stomp_connect_error)
++PHP_FUNCTION(stomp_connect_error)
+ {
+ if (STOMP_G(error_msg)) {
+ RETURN_STRING(STOMP_G(error_msg));
+@@ -629,7 +629,7 @@ PHP_FUNCTION(stomp_connect_error)
+ }
+ /* }}} */
+
+-/* {{{ proto string Stomp::getSessionId()
++/* {{{ proto string Stomp::getSessionId()
+ Get the current stomp session ID */
+ PHP_FUNCTION(stomp_get_session_id)
+ {
+@@ -695,13 +695,13 @@ PHP_FUNCTION(stomp_send)
+ stomp_t *stomp = NULL;
+ zend_string *destination;
+ zval *msg, *headers = NULL, rv;
+- stomp_frame_t frame = {0};
++ stomp_frame_t frame = {0};
+ int success = 0;
+
+ if (stomp_object) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() , "Sz|a!", &destination, &msg, &headers) == FAILURE) {
+ return;
+- }
++ }
+ FETCH_STOMP_OBJECT;
+ } else {
+ zval *arg;
+@@ -718,7 +718,7 @@ PHP_FUNCTION(stomp_send)
+ }
+
+ INIT_FRAME(frame, "SEND");
+-
++
+ /* Translate a PHP array to a stomp_header array */
+ if (NULL != headers) {
+ FRAME_HEADER_FROM_HASHTABLE(frame.headers, Z_ARRVAL_P(headers));
+@@ -727,7 +727,7 @@ PHP_FUNCTION(stomp_send)
+ /* Add the destination */
+ ZVAL_STR(&rv, zend_string_copy(destination));
+ zend_hash_str_add(frame.headers, "destination", sizeof("destination") - 1, &rv);
+-
++
+ if (Z_TYPE_P(msg) == IS_STRING) {
+ frame.body = Z_STRVAL_P(msg);
+ frame.body_length = Z_STRLEN_P(msg);
+@@ -770,7 +770,7 @@ PHP_FUNCTION(stomp_subscribe)
+ stomp_t *stomp = NULL;
+ zend_string *destination;
+ zval *headers = NULL, rv;
+- stomp_frame_t frame = {0};
++ stomp_frame_t frame = {0};
+ int success = 0;
+
+ if (stomp_object) {
+@@ -793,7 +793,7 @@ PHP_FUNCTION(stomp_subscribe)
+ }
+
+ INIT_FRAME(frame, "SUBSCRIBE");
+-
++
+ /* Translate a PHP array to a stomp_header array */
+ if (NULL != headers) {
+ FRAME_HEADER_FROM_HASHTABLE(frame.headers, Z_ARRVAL_P(headers));
+@@ -824,7 +824,7 @@ PHP_FUNCTION(stomp_unsubscribe)
+ stomp_t *stomp = NULL;
+ zend_string *destination;
+ zval *headers = NULL, rv;
+- stomp_frame_t frame = {0};
++ stomp_frame_t frame = {0};
+ int success = 0;
+
+ if (stomp_object) {
+@@ -847,7 +847,7 @@ PHP_FUNCTION(stomp_unsubscribe)
+ }
+
+ INIT_FRAME(frame, "UNSUBSCRIBE");
+-
++
+ /* Translate a PHP array to a stomp_header array */
+ if (NULL != headers) {
+ FRAME_HEADER_FROM_HASHTABLE(frame.headers, Z_ARRVAL_P(headers));
+@@ -866,9 +866,9 @@ PHP_FUNCTION(stomp_unsubscribe)
+ }
+ /* }}} */
+
+-/* {{{ proto boolean Stomp::hasFrame()
++/* {{{ proto boolean Stomp::hasFrame()
+ Indicate whether or not there is a frame ready to read */
+-PHP_FUNCTION(stomp_has_frame)
++PHP_FUNCTION(stomp_has_frame)
+ {
+ zval *stomp_object = getThis();
+ stomp_t *stomp = NULL;
+@@ -886,7 +886,7 @@ PHP_FUNCTION(stomp_has_frame)
+ }
+ /* }}} */
+
+-/* {{{ proto StompFrame Stomp::readFrame()
++/* {{{ proto StompFrame Stomp::readFrame()
+ Read the next frame */
+ PHP_FUNCTION(stomp_read_frame)
+ {
+@@ -947,7 +947,7 @@ PHP_FUNCTION(stomp_read_frame)
+ zend_hash_update(Z_ARRVAL(headers), key, val);
+ } ZEND_HASH_FOREACH_END();
+ }
+-
++
+ if (ce) {
+ zend_fcall_info fci;
+ zend_fcall_info_cache fcc;
+@@ -1029,14 +1029,14 @@ static void _php_stomp_transaction(INTERNAL_FUNCTION_PARAMETERS, char *cmd, size
+ zval *stomp_object = getThis();
+ stomp_t *stomp = NULL;
+ zend_string *transaction_id;
+- stomp_frame_t frame = {0};
++ stomp_frame_t frame = {0};
+ int success = 0;
+ zval *headers = NULL, rv;
+
+ if (stomp_object) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() , "S|a", &transaction_id, &headers) == FAILURE) {
+ return;
+- }
++ }
+ FETCH_STOMP_OBJECT;
+ } else {
+ zval *arg;
+@@ -1091,19 +1091,19 @@ PHP_FUNCTION(stomp_abort)
+ }
+ /* }}} */
+
+-/* {{{ _php_stomp_acknowledgment
++/* {{{ _php_stomp_acknowledgment
+ */
+ static void _php_stomp_acknowledgment(INTERNAL_FUNCTION_PARAMETERS, char *cmd) {
+ zval *stomp_object = getThis();
+ zval *msg, *headers = NULL;
+ stomp_t *stomp = NULL;
+- stomp_frame_t frame = {0};
++ stomp_frame_t frame = {0};
+ int success = 0;
+
+ if (stomp_object) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() , "z|a!", &msg, &headers) == FAILURE) {
+ return;
+- }
++ }
+ FETCH_STOMP_OBJECT;
+ } else {
+ zval *arg;
+@@ -1135,7 +1135,7 @@ static void _php_stomp_acknowledgment(INTERNAL_FUNCTION_PARAMETERS, char *cmd) {
+ CLEAR_FRAME(frame);
+ RETURN_FALSE;
+ }
+-
++
+ if (stomp_send(stomp, &frame ) > 0) {
+ success = stomp_valid_receipt(stomp, &frame);
+ }
+@@ -1161,7 +1161,7 @@ PHP_FUNCTION(stomp_nack)
+ }
+ /* }}} */
+
+-/* {{{ proto string Stomp::error()
++/* {{{ proto string Stomp::error()
+ Get the last error message */
+ PHP_FUNCTION(stomp_error)
+ {
+@@ -1205,7 +1205,7 @@ PHP_FUNCTION(stomp_set_read_timeout)
+ if (zend_parse_parameters(ZEND_NUM_ARGS() , "l|l", &sec, &usec) == FAILURE) {
+ return;
+ }
+- FETCH_STOMP_OBJECT;
++ FETCH_STOMP_OBJECT;
+ } else {
+ zval *arg;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() , "rl|l", &arg, &sec, &usec) == FAILURE) {
+@@ -1219,14 +1219,14 @@ PHP_FUNCTION(stomp_set_read_timeout)
+ }
+ /* }}} */
+
+-/* {{{ proto array Stomp::getTimeout()
++/* {{{ proto array Stomp::getTimeout()
+ Get the timeout */
+ PHP_FUNCTION(stomp_get_read_timeout)
+ {
+ zval *stomp_object = getThis();
+ stomp_t *stomp = NULL;
+ if (stomp_object) {
+- FETCH_STOMP_OBJECT;
++ FETCH_STOMP_OBJECT;
+ } else {
+ zval *arg;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() , "r", &arg) == FAILURE) {
+@@ -1270,7 +1270,7 @@ PHP_METHOD(stompframe, __construct)
+ Get error details */
+ PHP_METHOD(stompexception, getDetails)
+ {
+- zval *object = getThis();
++ zval *object = getThis();
+ zval rv, *details = zend_read_property(stomp_ce_exception, object, "details", sizeof("details")-1, 1, &rv);
+ RETURN_STR(zval_get_string(details));
+ }
+diff --git a/php_stomp.h b/php_stomp.h
+index 805b9f6..fdaaa3e 100644
+--- a/php_stomp.h
++++ b/php_stomp.h
+@@ -24,7 +24,7 @@
+ typedef struct _stomp_object {
+ stomp_t *stomp;
+ zend_object std;
+-} stomp_object_t;
++} stomp_object_t;
+
+ #define PHP_STOMP_EXTNAME "Stomp"
+ #define PHP_STOMP_VERSION "2.0.2"
+@@ -104,7 +104,7 @@ ZEND_END_MODULE_GLOBALS(stomp)
+ #define STOMP_G(v) TSRMG(stomp_globals_id, zend_stomp_globals *, v)
+ #else
+ #define STOMP_G(v) (stomp_globals.v)
+-#endif
++#endif
+
+ #endif /* PHP_STOMP_H */
+
+diff --git a/stomp.h b/stomp.h
+index 19bd8dd..1a422b7 100644
+--- a/stomp.h
++++ b/stomp.h
+@@ -40,7 +40,7 @@ typedef struct _stomp_options {
+ long read_timeout_usec;
+ #if HAVE_STOMP_SSL
+ int use_ssl;
+-#endif
++#endif
+ } stomp_options_t;
+
+ typedef struct _stomp_frame {
+@@ -57,7 +57,7 @@ typedef struct _stomp_frame_stack {
+ } stomp_frame_stack_t;
+
+ typedef struct _stomp {
+- php_socket_t fd;
++ php_socket_t fd;
+ php_sockaddr_storage localaddr;
+ stomp_options_t options;
+ char *host;
+diff --git a/tests/002-version.phpt b/tests/002-version.phpt
+index d3779aa..6e30db1 100644
+--- a/tests/002-version.phpt
++++ b/tests/002-version.phpt
+@@ -3,7 +3,7 @@ Test stomp_version()
+ --SKIPIF--
+ <?php if (!extension_loaded("stomp")) print "skip"; ?>
+ --FILE--
+-<?php
++<?php
+ echo stomp_version();
+ ?>
+ --EXPECTF--
+diff --git a/tests/003-connect/001.phpt b/tests/003-connect/001.phpt
+index 31b48c1..1e3c968 100644
+--- a/tests/003-connect/001.phpt
++++ b/tests/003-connect/001.phpt
+@@ -3,7 +3,7 @@ Test stomp_connect() - URI validation
+ --SKIPIF--
+ <?php if (!extension_loaded("stomp")) print "skip"; ?>
+ --FILE--
+-<?php
++<?php
+ var_dump(stomp_connect(''), stomp_connect_error());
+ var_dump(stomp_connect(1), stomp_connect_error());
+ var_dump(stomp_connect('foo'), stomp_connect_error());
+diff --git a/tests/003-connect/002.phpt b/tests/003-connect/002.phpt
+index 6c40f37..4d05989 100644
+--- a/tests/003-connect/002.phpt
++++ b/tests/003-connect/002.phpt
+@@ -1,12 +1,12 @@
+ --TEST--
+-Test stomp_connect() - Test connection
++Test stomp_connect() - Test connection
+ --SKIPIF--
+ <?php
+ $require_connection = true;
+ include dirname(__DIR__). "/skipif.inc";
+ ?>
+ --FILE--
+-<?php
++<?php
+ include dirname(__DIR__) . "/config.inc";
+ var_dump(stomp_connect(STOMP_ADDRESS));
+ var_dump(stomp_connect_error());
+diff --git a/tests/003-connect/003.phpt b/tests/003-connect/003.phpt
+index eb25a40..b3de8d6 100644
+--- a/tests/003-connect/003.phpt
++++ b/tests/003-connect/003.phpt
+@@ -5,7 +5,7 @@ Test stomp_connect() - Test error on CONNECT
+ include "../skipif.inc"
+ ?>
+ --FILE--
+-<?php
++<?php
+ try {
+ $stomp = new Stomp('tcp://localhost', 'anotpresentusername1234');
+ } catch (Exception $e) {
+diff --git a/tests/004-getSessionId/001.phpt b/tests/004-getSessionId/001.phpt
+index a798a1a..08b92a9 100644
+--- a/tests/004-getSessionId/001.phpt
++++ b/tests/004-getSessionId/001.phpt
+@@ -1,12 +1,12 @@
+ --TEST--
+ Test stomp_get_session_id()
+ --SKIPIF--
+-<?php
++<?php
+ $require_connection = true;
+ include dirname(__DIR__) . '/skipif.inc';
+ ?>
+ --FILE--
+-<?php
++<?php
+ include dirname(__DIR__) . "/config.inc";
+ $link = stomp_connect(STOMP_ADDRESS);
+ var_dump(stomp_get_session_id($link));
+diff --git a/tests/005-close/001.phpt b/tests/005-close/001.phpt
+index 9e46e78..0a23a59 100644
+--- a/tests/005-close/001.phpt
++++ b/tests/005-close/001.phpt
+@@ -1,11 +1,11 @@
+ --TEST--
+ Test stomp_close() - tests parameters
+ --SKIPIF--
+-<?php
++<?php
+ include dirname(__DIR__) . "/skipif.inc";
+ ?>
+ --FILE--
+-<?php
++<?php
+ stomp_close(null);
+ ?>
+ --EXPECTF--
+diff --git a/tests/005-close/002.phpt b/tests/005-close/002.phpt
+index b24c197..b3dbd95 100644
+--- a/tests/005-close/002.phpt
++++ b/tests/005-close/002.phpt
+@@ -1,12 +1,12 @@
+ --TEST--
+ Test stomp_close()
+ --SKIPIF--
+-<?php
++<?php
+ $require_connection = true;
+ include dirname(__DIR__) . "/skipif.inc";
+ ?>
+ --FILE--
+-<?php
++<?php
+ include dirname(__DIR__) . "/config.inc";
+ $link = stomp_connect(STOMP_ADDRESS);
+ if($link) echo "success" . PHP_EOL;
+diff --git a/tests/006-send/001.phpt b/tests/006-send/001.phpt
+index 65cc607..82b29c6 100644
+--- a/tests/006-send/001.phpt
++++ b/tests/006-send/001.phpt
+@@ -6,7 +6,7 @@ $require_connection = true;
+ include dirname(__DIR__) . "/skipif.inc";
+ ?>
+ --FILE--
+-<?php
++<?php
+ include dirname(__DIR__) . "/skipif.inc";
+
+ $link = stomp_connect(STOMP_ADDRESS);
+diff --git a/tests/006-send/002.phpt b/tests/006-send/002.phpt
+index 35da23e..6301c39 100644
+--- a/tests/006-send/002.phpt
++++ b/tests/006-send/002.phpt
+@@ -6,7 +6,7 @@ $require_connection = true;
+ include dirname(__DIR__) . "/skipif.inc";
+ ?>
+ --FILE--
+-<?php
++<?php
+
+ include dirname(__DIR__) . "/config.inc";
+
+diff --git a/tests/006-send/003.phpt b/tests/006-send/003.phpt
+index 5a4d384..14f2745 100644
+--- a/tests/006-send/003.phpt
++++ b/tests/006-send/003.phpt
+@@ -6,7 +6,7 @@ $require_connection = true;
+ include dirname(__DIR__) . "/skipif.inc";
+ ?>
+ --FILE--
+-<?php
++<?php
+ include dirname(__DIR__) . "/skipif.inc";
+ $s = new Stomp(STOMP_ADDRESS);
+ var_dump($s->send('/queue/test-06', 'A real message', array('receipt' => 'message-12345')));
+diff --git a/tests/007-subscribe/001.phpt b/tests/007-subscribe/001.phpt
+index 644c404..8d190dd 100644
+--- a/tests/007-subscribe/001.phpt
++++ b/tests/007-subscribe/001.phpt
+@@ -6,7 +6,7 @@ $require_connection = true;
+ include dirname(__DIR__) . "/skipif.inc";
+ ?>
+ --FILE--
+-<?php
++<?php
+ include dirname(__DIR__) . "/skipif.inc";
+
+ $s = new Stomp(STOMP_ADDRESS);
+diff --git a/tests/008-unsubscribe/001.phpt b/tests/008-unsubscribe/001.phpt
+index 647d7a5..c1200eb 100644
+--- a/tests/008-unsubscribe/001.phpt
++++ b/tests/008-unsubscribe/001.phpt
+@@ -6,7 +6,7 @@ $require_connection = true;
+ include dirname(__DIR__) . "/skipif.inc";
+ ?>
+ --FILE--
+-<?php
++<?php
+ include dirname(__DIR__) . "/config.inc";
+
+ $s = new Stomp(STOMP_ADDRESS);
+diff --git a/tests/009-readFrame/001.phpt b/tests/009-readFrame/001.phpt
+index fe600b3..e67bad6 100644
+--- a/tests/009-readFrame/001.phpt
++++ b/tests/009-readFrame/001.phpt
+@@ -6,7 +6,7 @@ $require_connection = true;
+ include dirname(__DIR__) . "/skipif.inc";
+ ?>
+ --FILE--
+-<?php
++<?php
+ include dirname(__DIR__) . "/config.inc";
+
+ $s = new Stomp(STOMP_ADDRESS);
+diff --git a/tests/009-readFrame/003.phpt b/tests/009-readFrame/003.phpt
+index f1e29b6..6e61254 100644
+--- a/tests/009-readFrame/003.phpt
++++ b/tests/009-readFrame/003.phpt
+@@ -1,12 +1,12 @@
+ --TEST--
+-Test stomp::readFrame() - custom frame class
++Test stomp::readFrame() - custom frame class
+ --SKIPIF--
+ <?php
+ $require_connection = true;
+ include dirname(__DIR__) . "/skipif.inc";
+ ?>
+ --FILE--
+-<?php
++<?php
+
+ include dirname(__DIR__) . "/config.inc";
+
+diff --git a/tests/009-readFrame/006.phpt b/tests/009-readFrame/006.phpt
+index 0d1ffc4..e90ee80 100644
+--- a/tests/009-readFrame/006.phpt
++++ b/tests/009-readFrame/006.phpt
+@@ -6,7 +6,7 @@ $require_connection = true;
+ include dirname(__DIR__) . "/skipif.inc";
+ ?>
+ --FILE--
+-<?php
++<?php
+
+ include dirname(__DIR__) . "/config.inc";
+
+diff --git a/tests/010-timeout/001.phpt b/tests/010-timeout/001.phpt
+index 8256baa..7389f70 100644
+--- a/tests/010-timeout/001.phpt
++++ b/tests/010-timeout/001.phpt
+@@ -5,11 +5,11 @@ stomp.default_read_timeout_sec=5
+ stomp.default_read_timeout_usec=5
+ --SKIPIF--
+ <?php
+- if (!extension_loaded("stomp")) print "skip";
++ if (!extension_loaded("stomp")) print "skip";
+ if (!stomp_connect()) print "skip";
+ ?>
+ --FILE--
+-<?php
++<?php
+ $s = new Stomp();
+
+ // First test, read from ini variables, expected to return 5.5
+diff --git a/tests/010-timeout/002.phpt b/tests/010-timeout/002.phpt
+index 65d3c28..a150cb8 100644
+--- a/tests/010-timeout/002.phpt
++++ b/tests/010-timeout/002.phpt
+@@ -5,11 +5,11 @@ stomp.default_read_timeout_sec=5
+ stomp.default_read_timeout_usec=5
+ --SKIPIF--
+ <?php
+- if (!extension_loaded("stomp")) print "skip";
++ if (!extension_loaded("stomp")) print "skip";
+ if (!stomp_connect()) print "skip";
+ ?>
+ --FILE--
+-<?php
++<?php
+ $link = stomp_connect();
+
+ // First test, read from ini variables, expected to return 5.5
+diff --git a/tests/011-commit/001.phpt b/tests/011-commit/001.phpt
+index 3636095..33dd57d 100644
+--- a/tests/011-commit/001.phpt
++++ b/tests/011-commit/001.phpt
+@@ -6,7 +6,7 @@ $require_connection = true;
+ include dirname(__DIR__) . "/skipif.inc";
+ ?>
+ --FILE--
+-<?php
++<?php
+
+ include dirname(__DIR__) . "/config.inc";
+
+diff --git a/tests/skipif.inc b/tests/skipif.inc
+index 033a4be..858dd49 100644
+--- a/tests/skipif.inc
++++ b/tests/skipif.inc
+@@ -2,7 +2,7 @@
+ include __DIR__ . "/config.inc";
+
+ if (!extension_loaded("stomp")) {
+- print "skip";
++ print "skip";
+ }
+ if (isset($require_connection) && $require_connection) {
+ $stomp = stomp_connect(STOMP_ADDRESS);
+
+From 13681a79d9389603d9788802f0a114671a753df1 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Fri, 25 Sep 2020 16:06:39 +0200
+Subject: [PATCH 1/2] Fix compatibility with PHP 8 - cleanup remaining TSRMLS
+ macros - fix read/update_property parameters - adapt test suite for exception
+ in arg. parsing - fix callback
+
+---
+ php_stomp.c | 38 ++++++++++++++++++++--------------
+ stomp.c | 6 +++---
+ stomp.h | 4 ++--
+ tests/003-connect/003.phpt | 2 +-
+ tests/005-close/001.phpt | 8 +++++--
+ tests/007-subscribe/001.phpt | 2 +-
+ tests/008-unsubscribe/001.phpt | 2 +-
+ tests/010-timeout/001.phpt | 24 ++++++++++++---------
+ tests/010-timeout/002.phpt | 26 ++++++++++++++---------
+ 9 files changed, 67 insertions(+), 45 deletions(-)
+
+diff --git a/php_stomp.c b/php_stomp.c
+index 0dcefed..b99a9ff 100644
+--- a/php_stomp.c
++++ b/php_stomp.c
+@@ -95,7 +95,7 @@
+ zval _object, *object = &_object; \
+ THROW_STOMP_EXCEPTION(object, errno, msg) \
+ if (details) { \
+- zend_update_property_string(stomp_ce_exception, object, "details", sizeof("details")-1, (char *) details ); \
++ zend_update_property_string(stomp_ce_exception, OBJ_FOR_PROP(object), "details", sizeof("details")-1, (char *) details ); \
+ } \
+ }
+
+@@ -105,6 +105,12 @@
+ #define STOMP_URL_STR(a) ZSTR_VAL(a)
+ #endif
+
++#if PHP_VERSION_ID < 80000
++#define OBJ_FOR_PROP(zv) (zv)
++#else
++#define OBJ_FOR_PROP(zv) Z_OBJ_P(zv)
++#endif
++
+ static int le_stomp;
+ static zend_object_handlers stomp_obj_handlers;
+
+@@ -562,7 +568,7 @@ PHP_FUNCTION(stomp_connect)
+ zval excobj;
+ THROW_STOMP_EXCEPTION(&excobj, stomp->errnum, stomp->error);
+ if (stomp->error_details) {
+- zend_update_property_string(stomp_ce_exception, &excobj, "details", sizeof("details")-1, stomp->error_details );
++ zend_update_property_string(stomp_ce_exception, OBJ_FOR_PROP(&excobj), "details", sizeof("details")-1, stomp->error_details );
+ }
+ return;
+ }
+@@ -576,7 +582,7 @@ PHP_FUNCTION(stomp_connect)
+ if ((error_msg = zend_hash_str_find(res->headers, ZEND_STRL("message"))) != NULL) {
+ THROW_STOMP_EXCEPTION(&excobj, 0, ZSTR_VAL(Z_STR_P(error_msg)));
+ if (res->body) {
+- zend_update_property_string(stomp_ce_exception, &excobj, "details", sizeof("details")-1, (char *) res->body );
++ zend_update_property_string(stomp_ce_exception, OBJ_FOR_PROP(&excobj), "details", sizeof("details")-1, (char *) res->body );
+ }
+ }
+ stomp_free_frame(res);
+@@ -733,17 +739,17 @@ PHP_FUNCTION(stomp_send)
+ frame.body_length = Z_STRLEN_P(msg);
+ } else if (Z_TYPE_P(msg) == IS_OBJECT && instanceof_function(Z_OBJCE_P(msg), stomp_ce_frame )) {
+ zval *frame_obj_prop = NULL;
+- frame_obj_prop = zend_read_property(stomp_ce_frame, msg, "command", sizeof("command")-1, 1, &rv);
++ frame_obj_prop = zend_read_property(stomp_ce_frame, OBJ_FOR_PROP(msg), "command", sizeof("command")-1, 1, &rv);
+ if (Z_TYPE_P(frame_obj_prop) == IS_STRING) {
+ frame.command = Z_STRVAL_P(frame_obj_prop);
+ frame.command_length = Z_STRLEN_P(frame_obj_prop);
+ }
+- frame_obj_prop = zend_read_property(stomp_ce_frame, msg, "body", sizeof("body")-1, 1, &rv);
++ frame_obj_prop = zend_read_property(stomp_ce_frame, OBJ_FOR_PROP(msg), "body", sizeof("body")-1, 1, &rv);
+ if (Z_TYPE_P(frame_obj_prop) == IS_STRING) {
+ frame.body = Z_STRVAL_P(frame_obj_prop);
+ frame.body_length = Z_STRLEN_P(frame_obj_prop);
+ }
+- frame_obj_prop = zend_read_property(stomp_ce_frame, msg, "headers", sizeof("headers")-1, 1, &rv);
++ frame_obj_prop = zend_read_property(stomp_ce_frame, OBJ_FOR_PROP(msg), "headers", sizeof("headers")-1, 1, &rv);
+ if (Z_TYPE_P(frame_obj_prop) == IS_ARRAY) {
+ FRAME_HEADER_FROM_HASHTABLE(frame.headers, Z_ARRVAL_P(frame_obj_prop));
+ }
+@@ -928,7 +934,7 @@ PHP_FUNCTION(stomp_read_frame)
+ zval excobj;
+ THROW_STOMP_EXCEPTION(&excobj, 0, Z_STRVAL_P(error_msg));
+ if (res->body) {
+- zend_update_property_string(stomp_ce_exception, &excobj, ZEND_STRL("details"), (char *)res->body );
++ zend_update_property_string(stomp_ce_exception, OBJ_FOR_PROP(&excobj), ZEND_STRL("details"), (char *)res->body );
+ }
+ stomp_free_frame(res);
+ RETURN_FALSE;
+@@ -966,10 +972,11 @@ PHP_FUNCTION(stomp_read_frame)
+ ZVAL_NULL(&body);
+ }
+
++ memset(&fci, 0, sizeof(fci));
++ memset(&fcc, 0, sizeof(fcc));
+ fci.size = sizeof(fci);
+ #if (PHP_MAJOR_VERSION == 7 && PHP_MINOR_VERSION == 0)
+ fci.function_table = &ce->function_table;
+- fci.symbol_table = NULL;
+ #endif
+ /* PARAMS */
+ fci.param_count = 3;
+@@ -981,8 +988,9 @@ PHP_FUNCTION(stomp_read_frame)
+ ZVAL_UNDEF(&fci.function_name);
+ fci.object = Z_OBJ_P(return_value);
+ fci.retval = &retval;
++#if PHP_VERSION_ID < 80000
+ fci.no_separation = 1;
+-
++#endif
+ #if PHP_VERSION_ID < 70300
+ fcc.initialized = 1;
+ #endif
+@@ -995,7 +1003,7 @@ PHP_FUNCTION(stomp_read_frame)
+ fcc.object = Z_OBJ_P(return_value);
+
+ if (zend_call_function(&fci, &fcc ) == FAILURE) {
+- zend_throw_exception_ex(zend_exception_get_default(TSRMLS_C), 0 , "Could not execute %s::%s()", ZSTR_VAL(ce->name), ZSTR_VAL(ce->constructor->common.function_name));
++ zend_throw_exception_ex(zend_exception_get_default(), 0 , "Could not execute %s::%s()", ZSTR_VAL(ce->name), ZSTR_VAL(ce->constructor->common.function_name));
+ } else {
+ zval_ptr_dtor(&retval);
+ }
+@@ -1125,7 +1133,7 @@ static void _php_stomp_acknowledgment(INTERNAL_FUNCTION_PARAMETERS, char *cmd) {
+ } else if (Z_TYPE_P(msg) == IS_OBJECT && instanceof_function(Z_OBJCE_P(msg), stomp_ce_frame )) {
+ zval *frame_obj_prop, rv;
+
+- frame_obj_prop = zend_read_property(stomp_ce_frame, msg, "headers", sizeof("headers")-1, 1, &rv);
++ frame_obj_prop = zend_read_property(stomp_ce_frame, OBJ_FOR_PROP(msg), "headers", sizeof("headers")-1, 1, &rv);
+ if (Z_TYPE_P(frame_obj_prop) == IS_ARRAY) {
+ FRAME_HEADER_FROM_HASHTABLE(frame.headers, Z_ARRVAL_P(frame_obj_prop));
+ }
+@@ -1255,13 +1263,13 @@ PHP_METHOD(stompframe, __construct)
+ }
+
+ if (command_length > 0) {
+- zend_update_property_stringl(stomp_ce_frame, object, "command", sizeof("command")-1, command, command_length );
++ zend_update_property_stringl(stomp_ce_frame, OBJ_FOR_PROP(object), "command", sizeof("command")-1, command, command_length );
+ }
+ if (headers) {
+- zend_update_property(stomp_ce_frame, object, "headers", sizeof("headers")-1, headers );
++ zend_update_property(stomp_ce_frame, OBJ_FOR_PROP(object), "headers", sizeof("headers")-1, headers );
+ }
+ if (body_length > 0) {
+- zend_update_property_stringl(stomp_ce_frame, object, "body", sizeof("body")-1, body, body_length );
++ zend_update_property_stringl(stomp_ce_frame, OBJ_FOR_PROP(object), "body", sizeof("body")-1, body, body_length );
+ }
+ }
+ /* }}} */
+@@ -1271,7 +1279,7 @@ PHP_METHOD(stompframe, __construct)
+ PHP_METHOD(stompexception, getDetails)
+ {
+ zval *object = getThis();
+- zval rv, *details = zend_read_property(stomp_ce_exception, object, "details", sizeof("details")-1, 1, &rv);
++ zval rv, *details = zend_read_property(stomp_ce_exception, OBJ_FOR_PROP(object), "details", sizeof("details")-1, 1, &rv);
+ RETURN_STR(zval_get_string(details));
+ }
+ /* }}} */
+diff --git a/stomp.c b/stomp.c
+index d83a4e6..6e77ede 100644
+--- a/stomp.c
++++ b/stomp.c
+@@ -34,7 +34,7 @@ extern zend_class_entry *stomp_ce_exception;
+
+ /* {{{ DEBUG */
+ #if PHP_DEBUG
+-static void print_stomp_frame(stomp_frame_t *frame TSRMLS_DC) {
++static void print_stomp_frame(stomp_frame_t *frame) {
+ php_printf("------ START FRAME ------\n");
+ php_printf("%s\n", frame->command);
+ /* Headers */
+@@ -186,7 +186,7 @@ int stomp_writable(stomp_t *stomp)
+
+ /* {{{ stomp_connect
+ */
+-int stomp_connect(stomp_t *stomp, const char *host, unsigned short port TSRMLS_DC)
++int stomp_connect(stomp_t *stomp, const char *host, unsigned short port)
+ {
+ char error[1024];
+ socklen_t size;
+@@ -297,7 +297,7 @@ void stomp_close(stomp_t *stomp)
+
+ /* {{{ stomp_send
+ */
+-int stomp_send(stomp_t *stomp, stomp_frame_t *frame TSRMLS_DC)
++int stomp_send(stomp_t *stomp, stomp_frame_t *frame)
+ {
+ smart_str buf = {0};
+
+diff --git a/stomp.h b/stomp.h
+index 1a422b7..e4d02b3 100644
+--- a/stomp.h
++++ b/stomp.h
+@@ -79,9 +79,9 @@ typedef struct _stomp {
+ } stomp_t;
+
+ stomp_t *stomp_init();
+-int stomp_connect(stomp_t *stomp, const char *host, unsigned short port TSRMLS_DC);
++int stomp_connect(stomp_t *stomp, const char *host, unsigned short port);
+ void stomp_close(stomp_t *stomp);
+-int stomp_send(stomp_t *connection, stomp_frame_t *frame TSRMLS_DC);
++int stomp_send(stomp_t *connection, stomp_frame_t *frame);
+ stomp_frame_t *stomp_read_frame_ex(stomp_t *connection, int use_stack);
+ int stomp_valid_receipt(stomp_t *connection, stomp_frame_t *frame);
+ int stomp_select_ex(stomp_t *connection, const long int sec, const long int usec);
+diff --git a/tests/003-connect/003.phpt b/tests/003-connect/003.phpt
+index b3de8d6..ba60e15 100644
+--- a/tests/003-connect/003.phpt
++++ b/tests/003-connect/003.phpt
+@@ -2,7 +2,7 @@
+ Test stomp_connect() - Test error on CONNECT
+ --SKIPIF--
+ <?php
+-include "../skipif.inc"
++include dirname(__DIR__) . "/skipif.inc";
+ ?>
+ --FILE--
+ <?php
+diff --git a/tests/005-close/001.phpt b/tests/005-close/001.phpt
+index 0a23a59..77cc014 100644
+--- a/tests/005-close/001.phpt
++++ b/tests/005-close/001.phpt
+@@ -6,7 +6,11 @@ include dirname(__DIR__) . "/skipif.inc";
+ ?>
+ --FILE--
+ <?php
+-stomp_close(null);
++try {
++ stomp_close(null);
++} catch (TypeError $e) {
++ echo $e->getMessage() . PHP_EOL;
++}
+ ?>
+ --EXPECTF--
+-Warning: stomp_close() expects parameter 1 to be resource, null given in %s on line %d
++%stomp_close()%s1%s null %s
+diff --git a/tests/007-subscribe/001.phpt b/tests/007-subscribe/001.phpt
+index 8d190dd..494471c 100644
+--- a/tests/007-subscribe/001.phpt
++++ b/tests/007-subscribe/001.phpt
+@@ -16,7 +16,7 @@ $s->subscribe('/queue/test', 'string');
+ --EXPECTF--
+ Warning: Stomp::subscribe(): Destination can not be empty in %s007-subscribe%c001.php on line %d
+
+-Fatal error: Uncaught TypeError: Argument 2 passed to Stomp::subscribe() must be of the type array, string given in %s007-subscribe%c001.php:%d
++Fatal error: Uncaught TypeError: %s, string given in %s007-subscribe%c001.php:%d
+ Stack trace:
+ #0 %s001.php(%d): Stomp->subscribe('/queue/test', 'string')
+ #1 {main}
+diff --git a/tests/008-unsubscribe/001.phpt b/tests/008-unsubscribe/001.phpt
+index c1200eb..7d1b50f 100644
+--- a/tests/008-unsubscribe/001.phpt
++++ b/tests/008-unsubscribe/001.phpt
+@@ -17,7 +17,7 @@ $s->unsubscribe('/queue/test', 'string');
+ --EXPECTF--
+ Warning: Stomp::unsubscribe(): Destination can not be empty in %s008-unsubscribe%c001.php on line %d
+
+-Fatal error: Uncaught TypeError: Argument 2 passed to Stomp::unsubscribe() must be of the type array, string given in %s008-unsubscribe%c001.php:%d
++Fatal error: Uncaught TypeError: %s2%s string given in %s008-unsubscribe%c001.php:%d
+ Stack trace:
+ #0 %s(%d): Stomp->unsubscribe('/queue/test', 'string')
+ #1 {main}
+diff --git a/tests/010-timeout/001.phpt b/tests/010-timeout/001.phpt
+index 7389f70..b9886db 100644
+--- a/tests/010-timeout/001.phpt
++++ b/tests/010-timeout/001.phpt
+@@ -25,13 +25,21 @@ var_dump($s->setReadTimeout(10, 5));
+ // Third test, read supposed to return 10.5
+ var_dump($s->getReadTimeout());
+
+-// Set read timout with the first param as a string, supposed to trigger a warning
+-var_dump($s->setReadTimeout(''));
++try {
++ // Set read timout with the first param as a string, supposed to trigger a warning/exception
++ var_dump($s->setReadTimeout(''));
++} catch (TypeError $e) {
++ echo $e->getMessage() . PHP_EOL;
++}
+ // Fourth test, read supposed to get the last value set : 10.5
+ var_dump($s->getReadTimeout());
+
+-// Set read timout with the second param as a string, supposed to trigger a warning
+-var_dump($s->setReadTimeout(10, ''));
++try {
++ // Set read timout with the second param as a string, supposed to trigger a warning/exception
++ var_dump($s->setReadTimeout(10, ''));
++} catch (TypeError $e) {
++ echo $e->getMessage() . PHP_EOL;
++}
+ // Fourth test, read supposed to get the last value set : 10.5
+ var_dump($s->getReadTimeout());
+
+@@ -64,18 +72,14 @@ array(2) {
+ ["usec"]=>
+ int(5)
+ }
+-
+-Warning: Stomp::setReadTimeout() expects parameter 1 to be long, string given in %s on line %d
+-NULL
++%AStomp::setReadTimeout()%s1%s string given%A
+ array(2) {
+ ["sec"]=>
+ int(10)
+ ["usec"]=>
+ int(5)
+ }
+-
+-Warning: Stomp::setReadTimeout() expects parameter 2 to be long, string given in %s on line %d
+-NULL
++%AStomp::setReadTimeout()%s2%s string given%A
+ array(2) {
+ ["sec"]=>
+ int(10)
+diff --git a/tests/010-timeout/002.phpt b/tests/010-timeout/002.phpt
+index a6a9b4a..c22dedf 100644
+--- a/tests/010-timeout/002.phpt
++++ b/tests/010-timeout/002.phpt
+@@ -25,13 +25,23 @@ var_dump(stomp_set_read_timeout($link, 10, 5));
+ // Third test, read supposed to return 10.5
+ var_dump(stomp_get_read_timeout($link));
+
+-// Set read timout with the first param as a string, supposed to trigger a warning
+-var_dump(stomp_set_read_timeout($link, ''));
++try {
++ // Set read timout with the first param as a string, supposed to trigger a warning on PHP 7
++ // supposed to trigger an exception on PHP 8
++ var_dump(stomp_set_read_timeout($link, ''));
++} catch (TypeError $e) {
++ echo $e->getMessage() . PHP_EOL;
++}
+ // Fourth test, read supposed to get the last value set : 10.5
+ var_dump(stomp_get_read_timeout($link));
+
+-// Set read timout with the second param as a string, supposed to trigger a warning
+-var_dump(stomp_set_read_timeout($link, 10, ''));
++try {
++ // Set read timout with the second param as a string, supposed to trigger a warning on PHP 7
++ // supposed to trigger an exception on PHP 8
++ var_dump(stomp_set_read_timeout($link, 10, ''));
++} catch (TypeError $e) {
++ echo $e->getMessage() . PHP_EOL;
++}
+ // Fourth test, read supposed to get the last value set : 10.5
+ var_dump(stomp_get_read_timeout($link));
+
+@@ -64,18 +74,14 @@ array(2) {
+ ["usec"]=>
+ int(5)
+ }
+-
+-Warning: stomp_set_read_timeout() expects parameter 2 to be long, string given in %s on line %d
+-NULL
++%Astomp_set_read_timeout()%s2%S string given%A
+ array(2) {
+ ["sec"]=>
+ int(10)
+ ["usec"]=>
+ int(5)
+ }
+-
+-Warning: stomp_set_read_timeout() expects parameter 3 to be long, string given in %s on line %d
+-NULL
++%Astomp_set_read_timeout()%s3%s string given%A
+ array(2) {
+ ["sec"]=>
+ int(10)
+