Andrey Hristov [Thu, 7 Feb 2013 15:05:27 +0000 (16:05 +0100)]
Add support for commit and rollback options.
Add support for explicitly starting a transaction - modes also available.
Using the API makes the life of load balancer mysqlnd plugins easier/possible.
Boris Lytochkin [Thu, 7 Feb 2013 10:48:28 +0000 (14:48 +0400)]
fix bug #64124 (IPv6 malformed)
hostname returned from zend_parse_parameters() was modified in
netsnmp_session_init() that caused imput parameter modification along with
unpredictable changes when parameter is a constant sctring.
Gustavo Lopes [Sun, 3 Feb 2013 01:00:48 +0000 (02:00 +0100)]
Fix test on Windows.
Windows complains of invalid parameters because the socket is not bound.
The test expected the error to be EAGAIN/EWOULDBLOCK. Moved the call down,
after the socket is bound.
Gustavo Lopes [Sun, 3 Feb 2013 00:22:44 +0000 (01:22 +0100)]
Fix bug and hopefully build on WinSDK 6.1
There build was failing on rmtools on the sockets extension for two reasons:
1. IPV6_TCLASS and IPV6_RECVTCLASS not being defined. These are probably
recent additions to SDK. Windows 7 doesn't event seem to have complete
support for IPV6_TCLASS, not accepting in WSASendMsg(). The parts that
needed this constant were not guarded by #ifdefs. They are now.
2. The constants EWOULDBLOCK and EINPROGRESS not being defined. These
were only defined in php_network.h, outside of the extension, and not
all source files included this header. Nevertheless, a macro defined in
php_sockets.h needed these constants. When this macro was used in files
that did not include php_network.h, the compilation would fail.
Surprisingly, the build did not fail when using the 7.1 Windows SDK
(more likely, the CRT headers used in VC10), as somehow errno.h was
being included through some other standard header. This would make the
constant EWOULDBLOCK defined; however, it would be defined to the wrong
value. In the winsock context, WSAEWOULDBLOCK should be used instead.
Because we have difficulty using Windows-only constants in the code, we
(re)define EWOULDBLOCK to WSAEWOULDBLOCK. This has the obvious
disavantage we may miss problems like this again in the future.
Gustavo Lopes [Sat, 2 Feb 2013 15:40:25 +0000 (16:40 +0100)]
Merge branch 'sendrecvmsg_rebase_55' into PHP-5.5
* sendrecvmsg_rebase_55: (31 commits)
Fix multicast.c not defining errno on Windows
Fix non-Windows build
send/recvmsg() support for Windows
Remove some pre-vista code
Revert "Payload of HOPLIMIT/TCLASS are 8-bit"
Ensure memory is initialized
Payload of HOPLIMIT/TCLASS are 8-bit
Fix buf in string -> int conv.
Build fixes; accept names for if_index
Refactoring: move stuff to new conversions.c
Support sticky IPV6_PKTINFO
Rename some functions for consistency
Destroy ancillary registry on shutdown
Move some multicast stuff to multicast.c
Fix mcast_ipv6_send test
Check return of fstat()
Fix build on Mac OS X
Register extra MSG_* constants
Add test for CMSG_RIGHTS
Add test for CMSG_CREDENTIALS message
...
I checked Linux and OpenBSD and both use integers to write the
IPV6_TCLASS messages and they don't force any endianness. This is
despite RFC 3542 explicitly saying the first byte of cmsg_data will
have the result. In any case, it doesn't make any difference in
little-endian archs.
Gustavo Lopes [Sun, 4 Nov 2012 23:38:23 +0000 (00:38 +0100)]
Added support for AF_UNIX messages
Added constants: SCM_RIGHTS, SCM_CREDENTIALS and SO_PASSCRED.
The function socket_cmsg_space() was modified to support message types with
variable size. Its new signature is:
int socket_cmsg_space(int $level, int $type, int $n)
where $n is the number of repetable elements that the message is composed of.
Gustavo Lopes [Thu, 1 Nov 2012 19:38:42 +0000 (20:38 +0100)]
Wrap recvmsg() and sendmsg()
This introduces two new functions:
int socket_recvmsg(resource $socket, array &$msghdr, int $flags)
int socket_sendmsg(resource $socket, array $msghdr, int $flags)
The arrays representing struct msghdr follow the native counterpart
closely: structs are mapped to arrays, fields to array elements whose
key is the name of the field without the prefix (e.g. "name" instead
of "msg_name") and array are mapped to sequential numeric PHP arrays.
Right now the only type of ancillary data supported is fot the
level/type pair IPPROTO_IPV6/IPV6_PKTINFO.
I also refactored out the name resolution functions and made
sockets_strerror() a global function.
Gustavo Lopes [Sat, 2 Feb 2013 14:32:03 +0000 (15:32 +0100)]
Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4:
Fix wrong blocking state being set
Fix tests (Windows)
Remove a Windows only warning
Move & improve PHP_SOCKET_ERROR def
Move some declarations to sockets.c
Fix overbroad skipif include
Gustavo Lopes [Sat, 2 Feb 2013 14:31:44 +0000 (15:31 +0100)]
Merge branch 'sockets_54_improv' into PHP-5.4
* sockets_54_improv:
Fix wrong blocking state being set
Fix tests (Windows)
Remove a Windows only warning
Move & improve PHP_SOCKET_ERROR def
Move some declarations to sockets.c
Fix overbroad skipif include
Remi Collet [Fri, 1 Feb 2013 18:23:25 +0000 (19:23 +0100)]
Fixed bug #64128 buit-in web server is broken on ppc64.
fdset management using bit operator is broken on non-x86 arch
and cause built-in server the enter an infinite loop of "select"
and never handle any request.
Nikita Popov [Fri, 1 Feb 2013 17:33:26 +0000 (18:33 +0100)]
Fix segfault when cloning generator with properties
Rule of thumb: Always implement the object clone handler rather
than the object storage clone handler. Actually I think we should
drop the latter. It's nearly never usable.