event: Changelog

Version Message
3.1.4 Fixed tests failing with PHP 8.4.0-alpha1 (thanks to Remi Collet).
3.1.3 EventDnsBase::__construct() now throws a TypeError if the type of the $initialize argument is anything other than int or bool.
3.1.2 Fixed an issue in EventDnsBase::__construct() where it failed to accept the init flag set to true when using libevent version < 2.1.0.
3.1.1 Fixed build in RHEL 7 and 8 (thanks to Remi Collet).
3.1.0 Stable version based on 3.1.0RC1. Refer to release notes of 3.1.0RC1 for details.
3.1.0RC1 - The loop will now be stopped if an event callback throws an exception.
This prevents user from losing control on the event loop.
- EventDnsBase::__construct() now accepts bool|int as its second parameter:
* false and true have the same meaning as before;
* EventDnsBase::DISABLE_WHEN_INACTIVE - Do not prevent the libevent event loop from exiting when we have no active DNS requests.
* EventDnsBase::INITIALIZE_NAMESERVERS - Process resolv.conf.
* EventDnsBase::NAMESERVERS_NO_DEFAULT - Do not add default nameserver if there are no nameservers in resolv.conf.
- Internally, a safer strlcpy() will be used instead of strcpy().
- Fixed a segmentation fault that might occur in the EventHttpRequest callback.
- Fixed a bug where the EventBuffer::copyout method didn't populate the output variable properly in PHP >= 8.2 (thanks to Joseph Tseng).
3.0.8 Set --with-openssl-dir configure option to "yes" by default.
3.0.7 Added support for in-tree build (PR https://bitbucket.org/osmanov/pecl-event/pull-requests/18/support-in-tree-build by dixyes)
Fixed tests/27-event-util-create-socket_php8.phpt on macOS
3.0.7RC1 Fixed #69: The event loop remained running when the user called exit() or an exception was thrown from the event callback. Now in these cases the loop will be stopped automatically.
3.0.6 Fixed tests for the builds in debug mode where libevent complained about STDIN and STDOUT being not set to non-blocking mode
Fixed build with OpenSSL 3.0 (Thanks to Remi Collet).
3.0.5 Fixed a test not working with PHP 8.1.0alpha1
3.0.4 Internal changes: Created a non-fastcall wrapper for zend_objects_new().
3.0.3 Fixed #66: Segmentation fault when calling EventConfig::avoidMethod because of incorrect arg info
3.0.2 - Fixed #65: some methods had wrong argument/return type hints
3.0.2r1 Stable version release.
3.0.1 - Fixed #64: build failed to find arginfo.h when invoked via pecl install event-beta
3.0.0 - Added PHP8 support.
- Introduced strict type hinting.
- Removed deprecated EventBufferEvent::sslFilter method.
2.5.7 Issue #61: fixed segfault that appeared after throwing exception from event handler in PHP 7.4.9+
2.5.6 Fixed a bug where numeric file descriptor was fetched from stdio stream incorrectly (issue #60)
2.5.5 Issue #60: fixed a segfault which appeared when Event::add was called on malformed or freed Event object
2.5.4 Fixed #59: PHP7 build errors with disabled SSL support
Fixed build error with disabled sockets support
2.5.3 Fixed #56: a warning occurred randomly when PHP stream cast via php_stream_cast() without the PHP_STREAM_CAST_INTERNAL flag.
Fixed build warnings with PHP 7.4.0-alpha1: 'incompatible pointer type' warnings occurred in assignments to the write property handlers (thanks to Remi Collet).
2.5.2 Fixed the value of EINPROGRESS constant in WIN32
2.5.1 Fixed build warnings with PHP 7.3
2.5.0 Issue #53: Added EventConfig::setFlags() method. (There was no way to set EVENT_BASE_FLAG_* flags.)
2.4.4 Fixed issue #53: EventBase::__construct now throws EventException if the features specified via the EventConfig parameter are not supported on the current platform.
2.4.3 Fixed config.w32 to take in account newer OpenSSL, which fixes build with PHP 7.2 (by Anatol Belski).
2.4.2 Fixed: SSL verification callback failed when EventSslContext was used with either EventBufferEvent::createSslFilter or EventBufferEvent::sslFilter.
2.4.1 Fixed issue #52: namespace issues when installing via pecl command in non-interactive mode.
2.4.0 Replaced obsolete AC_TRY_COMPILE with AC_COMPILE_IFELSE in config.m4
2.4.0RC3 Fixed test error on RHEL 6/7 (thanks to Remi Collet).
2.4.0RC2 Fixed tests/12-serialization.phpt (thanks to Remi Collet)
Fixed issue #49: "Invalid file descriptor" exceptions in PHP 7.2. Due to
Zend API changes in PHP 7.2, Event stream arguments were accepted by
reference.
2.4.0RC1 Issue #46: Class name conflict with Laravel and Lumen.
Added --with-event-ns configuration option.
2.3.0 Fixed build errors with LibreSSL
2.3.0RC1 Add: EventSslContext methods: setMinProtoVersion and setMaxProtoVersion for OpenSSL >= 1.1.0.
Add: EventSslContext constants: OPENSSL_VERSION_NUMBER and OPENSSL_VERSION_TEXT.
Fix: compilation warnings regarding OpenSSL features deprecated in version 1.0.0 and newer.
Deprecated: EventSslContext protocol version options are deprecated for OpenSSL >= 1.1.0.
Use the new setMinProtoVersion and setMaxProtoVersion methods instead.
Fix: build failed with custom openssl setup (non-standard --with-openssl-dir)
2.2.1 Fix: issue #31 where numeric file descriptor caused segmentation fault
2.1.0 Add: EventUtil::SOCK_RAW constant
Add: EventSslContext option constants: OPT_REQUIRE_CLIENT_CERT and OPT_VERIFY_CLIENT_ONCE
Fix: EventBufferEvent::createPair caused segmentation fault in PHP7
SSL Fixes:
- chained self-signed certificate failed to pass with EventSslContext::OPT_ALLOW_SELF_SIGNED = TRUE
- the server didn't set the list of CAs to be sent to the client when requesting a client certificate for underlying SSL structure
- EventSslContext::OPT_ALLOW_SELF_SIGNED = TRUE accepted any self-signed certificate without regard to OPT_CA_FILE/OPT_CA_PATH
Fix: PHP 7.1.0alpha1 build errors
2.0.4 Issue #28: event-2.0.3 Windows build fails
2.0.3 Issue #27: PHP > 7.0.6RC1 build fails
2.0.2 PHP7: fixed random EDOM errors in EventUtil::setSocketOption
2.0.1 PHP7: Protected user callbacks from destruction within libevent callbacks
2.0.0 Fixed some memory issues in PHP7
- SSL leaks
- Possibility of implicit destruction of user vars
- Unclean SSL bufferevent shutdown
- EventBufferEvent::free() within a callback damaged zvals bound to corresponding bufferevent thereby causing SEGFAULT

Fixed PHP5/PHP7 memory issue: string returned by EventBuffer::pullup() was not zero-terminated
2.0.0RC2 Fixed Mac OS X build errors
2.0.0RC1 PHP7 support added.

Fixes:
- issue #23: memory leak in EventHttpConnection close callback + memory leaks in HTTP callbacks.
- Libevent 'unrecoverable' fatal errors(fixed by stopping the loop in EventBase free-storage handler).

API changes:
- EventUtil::createSocket method added(PHP7)
- The first(EventBase) argument of EventBufferEvent::sslFilter method is deprecated, since the internal EventBase object must match EventBase object within the underlying EventBufferEvent
- Added EventBufferEvent::createSslFilter method as a replacement for the sslFilter method.
1.11.3 Issue #20: SSL_GET_PREV_SESSION:session id context uninitialized
1.11.2 Issue #6: memory leaks in EventHttp callbacks.
EventBufferEvent object returned by EventHttpRequest::getBufferEvent() should be freed explicitly,
if the method is called from a userspace callback.
1.11.1 Fixed build with old openssl (RHEL-5) (thanks to Remi Collet)
1.11.0 Fix: exceptions thrown from EventHttp and EventBufferEvent userspace callbacks were not passed through back to user.
Now the event loop will break and re-throw the exception.
Add: EventBase::free method
Add: EventBufferEvent methods:
- close
- sslGetCipherInfo
- sslGetCipherName
- sslGetCipherVersion
- sslGetProtocol
Add: EventSslContext options:
- OPT_NO_SSLv2
- OPT_NO_SSLv3
- OPT_NO_TLSv1
- OPT_NO_TLSv1_1
- OPT_NO_TLSv1_2
- OPT_CIPHER_SERVER_PREFERENCE
- TLSv11_CLIENT_METHOD
- TLSv11_SERVER_METHOD
- TLSv12_CLIENT_METHOD
- TLSv12_SERVER_METHOD
(Thanks to Mathieu CARBONNEAUX @ bitbucket.org)
Issue #13: EventBufferEvent::__construct failed to accept a persistent
socket client(STREAM_CLIENT_PERSISTENT)
1.10.3 Issue #8: pecl install failed due to the REST API issues with Unicode
1.10.2 Fix: EventBufferEvent::read() accepted negative values
Fix: TSRM context was not set in EventHttp::__construct (János Fekete)
Fix: refcounter in EventHttp's default callback (János Fekete)
1.10.1 Deleted a troublesome phpt test
1.10.0 Issue #3: Segmentation fault on EventHttpRequest->free() (Bitbucket's tracker).
Add: EventHttpConnection::__construct() now optionally accepts EventSslContext argument (issue #5).
Add: EventHttp::__construct() now accepts EventSslContext object as argument.
1.9.1 Fix: return value of EventBase::reInit() was inverted
issue #7: PHP_EVENT_REQUIRE_BASE_BY_REF() didn't work in 5.6.0-dev (fixed by Remi Collet)
1.9.0 Windows support introduced(thanks to Anatol Belski )

LIBEVENT_VERSION is now reported in phpinfo(Remi )

Forced passing EventBase argument by reference. A method accepting EventBase
will generate fatal error in case if corresponding argument is not passed by
reference.

EventBufferEvent::createPair method made static.
1.8.1 Fix: Bug #65847 Issue with old libevent2 where evhttp_connection_get_bufferevent function was not available with libevent version < 2.0.17 (thanks to Remi )
1.8.0 Add: EventHttpRequest methods: getBufferEvent, getConnection, closeConnection(thanks to rickysu at Bitbucket)
Add: EventHttpConnection::setCloseCallback method
1.7.8 Fix: build error on Solaris
Introduced negative dependencies: libevent extension, windows OS
1.7.7 Fix: incorrect handling of sockets extension dependency
(a hack for distros installing sockets separately)
1.7.6 Change: sockets extension is now required(see bug #65597). The user can still
turn off this requirement explicitly with --disable-event-sockets configure
option
1.7.5 Fix: build error with custom libevent installation prefixes like /lib(John Wamer)
1.7.4 Fix: Segmentation fault caused by direct access to the zend object properties' hash table
1.7.3 Fix: in php_event.c write_property function was non-static
Fix: absence of get_gc property handler caused segfaults with gc_collect_cycles()
1.7.2 Fix: bug #65320 where we got build errors in attempts to compile event statically(thanks to florin)
Fix: bug #65319 where config.m4 used to detect current PHP version
Fix: config.m4 included -levent_pthreads into LDFLAGS even --without-event-pthreads configuration
Fix: evthread_use_pthreads() call skept due to a "macro magic"(PHP_EVENT_ASSERT)
1.7.1 Fix: segmentation fault on gc_collect_cycles() after calling Event::free(), 5lava @ Bitbucket reported
Fix: assignment reference to "data" property caused 'Fatal error: Cannot assign by reference to overloaded object'
Fix: evnt object dtors sometimes didn't free the 'data' member until the script shutdown phase
1.7.0 Merged in 5lava/pecl-event (pull request #1) @bitbucket:
Fix: EventBufferEvent::setTimeouts() didn't work with double values
Fix: EventBuffer::copyout() didn't work in some cases
Add: EventBuffer::readFrom() method (corresponds to evbuffer_read())
Add: EventUtil::getSocketFD() method
1.6.2 Fix: bug #64678 where Fedora Packaging Guidlines required LICENSE file
Fix: bug #64680 where we should check for SKIP_ONLINE_TESTS environment variable
Fix: bug #64679 where we had buffer overflow caused by struct sockaddr_storage * pointer
1.6.1 Fix: bug #64652 where Event::__construct returned valid object, however, with
uninitialized internal struct which caused segmentation faults in further
method calls
1.6.0 Fix: bug #64551 with build failed on Mac OS X
Fix: address argument of the listener accept callback contained garbage in case of a client connected via UNIX domain socket
Add: EventBuffer::write, EventUtil::setSocketOption methods and some constants
Refact: automatically set the upper bound of EventBuffer::search to the buffer length, if it is greater then the length
Fix: make the code compatible with PHP 5.5.0 .. 5.6.0-dev
Fix: build error with zts PHP setup
Fix: build error with libevent_extra disabled
Add: EventListener fd readonly property for numeric file descriptor of the socket associated with the listener
Add: EventBuffer::substr method

INCOMPATIBLE CHANGES!
Renamed EventBuffer::remove to EventBuffer::read, EventBuffer::read now takes only max_bytes argument and returns string.
Renamed EventBuffer::removeBuffer to EventBuffer::appendFrom
EventBuffer::read now takes single argument 'size' and returns the string read
1.5.1 Fix: EventBuffer::removeBuffer returned boolean instead of the number of bytes read
Add: EventBuffer::fd property
Change: EventBuffer class is not final any more
1.5.0 Fix: uninitialized socket caused segmentation fault in EventBufferEvent methods
Del: EventBufferPosition class removed, EventBuffer::search now accepts and returns integers
Add: EventBuffer::searchEol method
Add: EventUtil::getSocketName method
Add: EventListener::getSocketName method
Fix: memory leak due to lack of zend_hash_destroy on the ssl context options
Add: support of UNIX domain sockets in EventListener::__construct, EventBufferEvent::connect methods
1.4.0 Add: HTTP server support:
* EventHttp methods: setMaxBodySize, setMaxHeadersSize, setTimeout,
addServerAlias, removeServerAlias setCallback, setDefaultCallback,
setAllowedMethods, setMaxBodySize, setMaxHeadersSize, setTimeout,
addServerAlias, removeServerAlias;
* EventHttpRequest class, callback and custom data can be bound to the
request for future use with EventHttpConnection
* New EventHttpConnection::makeRequest method allows to make custom HTTP
requests by means of EventHttpRequest class
Change: make EventDnsBase parameter optional in EventHttpConnection::__construct
Fix: classes/buffer_event.c: possible memory access violation in bufferevent callback
Fix: turn off buggy libevent thread lock debugging when built with --enable-event-debug
1.3.0 Fix: possible memory access violations in EventBufferEvent input/output property handlers
Change: Event::$timer_pending property removed; generic Event::$pending property added
Fix: With OPT_LEAVE_SOCKETS_BLOCKING flag EventListener::__construct turned fd to non-blocking mode
Fix: property and class HashTable's were not free'd in MSHUTDOWN
Add: Event::$data property
Fix: Event::__construct failed with Event::TIMEOUT flag
Fix: memory leak in EventBuffer::readLine
Add: --with-event-pthreads configure option
Fix: EventBase::reInit method's arginfo
1.2.6 Fix: with OpenSSL turned off got error: undefined symbol: zim_EventUtil_sslRandPoll
Add: implemented get_properties property handler(is called when one casts an object to array)
Refact: removed memory alloc for empty property hashtables
Fix: heap corruption caused by EventBufferEvent callbacks(thanks to Marco Schuster)
Fix: continuous calls to EventBufferEvent::setCallbacks didn't free old fci/fcc(thanks to Marco Schuster)
Fix: possible heap corruption in EventListener's callback
Add: EventBase::resume method
1.2.5 This is the first release on PECL since 1.0.0. Previous releases are available
here: https://bitbucket.org/osmanov/pecl-event

Add: callbacks and the callback arg are now passed to EventBufferEvent::__construct as optional arguments
Change: EventBufferEvent enable/disable methods return bool now
Change: instead of stream pass numeric file descriptor to EventListener's accept-connection callback
Fix: unneeded Z_ADDREF_P() calls in EventListener, EventBufferEvent constructors and factory methods
Fix: EventListener cached file descriptor for all connections