summaryrefslogtreecommitdiff
path: root/ext/sockets
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2010-01-07 13:31:53 +0100
committerOndřej Surý <ondrej@sury.org>2010-01-07 13:31:53 +0100
commit0fab6db7cac8d2be99579dd049f812a8ff98e74f (patch)
tree91f01b0d06916c78262404096bfd466b8e95e5b5 /ext/sockets
parentd3a8757891280dc6650ca7eead67830c794b0e7b (diff)
downloadphp-upstream/5.3.1.tar.gz
Imported Upstream version 5.3.1upstream/5.3.1
Diffstat (limited to 'ext/sockets')
-rw-r--r--ext/sockets/config.m42
-rw-r--r--ext/sockets/config.w322
-rw-r--r--ext/sockets/php_sockets.h6
-rw-r--r--ext/sockets/sockets.c12
-rw-r--r--ext/sockets/tests/bug46360.phpt17
-rw-r--r--ext/sockets/tests/socket_bind.phpt38
-rw-r--r--ext/sockets/tests/socket_bind_params.phpt29
-rw-r--r--ext/sockets/tests/socket_close_params.phpt21
-rw-r--r--ext/sockets/tests/socket_connect_error.phpt33
-rw-r--r--ext/sockets/tests/socket_connect_params.phpt33
-rw-r--r--ext/sockets/tests/socket_create_listen.phpt6
-rw-r--r--ext/sockets/tests/socket_create_listen_params.phpt23
-rw-r--r--ext/sockets/tests/socket_create_listen_used.phpt30
-rw-r--r--ext/sockets/tests/socket_create_pair-wrongparams.phpt6
-rw-r--r--ext/sockets/tests/socket_create_params.phpt24
-rw-r--r--ext/sockets/tests/socket_getpeername.phpt33
-rw-r--r--ext/sockets/tests/socket_getpeername_ipv4loop.phpt59
-rw-r--r--ext/sockets/tests/socket_getpeername_ipv6loop.phpt59
-rw-r--r--ext/sockets/tests/socket_getsockname.phpt32
-rw-r--r--ext/sockets/tests/socket_listen_params.phpt21
-rw-r--r--ext/sockets/tests/socket_read_params.phpt28
-rw-r--r--ext/sockets/tests/socket_sentto_recvfrom_ipv4_udp.phpt2
-rw-r--r--ext/sockets/tests/socket_sentto_recvfrom_unix.phpt10
-rw-r--r--ext/sockets/tests/socket_set_block-retval.phpt4
-rw-r--r--ext/sockets/tests/socket_set_nonblock-retval.phpt4
-rw-r--r--ext/sockets/tests/socket_set_nonblock.phpt24
-rw-r--r--ext/sockets/tests/socket_strerror.phpt154
-rw-r--r--ext/sockets/tests/socket_write_params.phpt28
-rw-r--r--ext/sockets/unix_socket_constants.h2
-rw-r--r--ext/sockets/win32_socket_constants.h2
30 files changed, 723 insertions, 21 deletions
diff --git a/ext/sockets/config.m4 b/ext/sockets/config.m4
index 8ebd25b92..ce18979ce 100644
--- a/ext/sockets/config.m4
+++ b/ext/sockets/config.m4
@@ -1,5 +1,5 @@
dnl
-dnl $Id: config.m4,v 1.15.4.1.2.1 2007/07/22 22:18:41 jani Exp $
+dnl $Id: config.m4 240160 2007-07-22 22:18:41Z jani $
dnl
PHP_ARG_ENABLE(sockets, whether to enable sockets support,
diff --git a/ext/sockets/config.w32 b/ext/sockets/config.w32
index 7b7a3ca50..320a19b1b 100644
--- a/ext/sockets/config.w32
+++ b/ext/sockets/config.w32
@@ -1,4 +1,4 @@
-// $Id: config.w32,v 1.1.8.2 2009/01/23 15:49:48 kalle Exp $
+// $Id: config.w32 274392 2009-01-23 15:49:49Z kalle $
// vim:ft=javascript
ARG_ENABLE("sockets", "SOCKETS support", "no");
diff --git a/ext/sockets/php_sockets.h b/ext/sockets/php_sockets.h
index fdf258d04..4f5c21e60 100644
--- a/ext/sockets/php_sockets.h
+++ b/ext/sockets/php_sockets.h
@@ -22,7 +22,7 @@
#ifndef PHP_SOCKETS_H
#define PHP_SOCKETS_H
-/* $Id: php_sockets.h,v 1.36.2.1.2.4.2.6 2009/01/24 12:42:19 bjori Exp $ */
+/* $Id: php_sockets.h 289417 2009-10-09 14:22:29Z pajoye $ */
#if HAVE_SOCKETS
@@ -73,7 +73,9 @@ PHP_FUNCTION(socket_clear_error);
#ifndef PHP_WIN32
typedef int PHP_SOCKET;
+# define PHP_SOCKETS_API PHPAPI
#else
+# define PHP_SOCKETS_API __declspec(dllexport)
typedef SOCKET PHP_SOCKET;
#endif
@@ -91,6 +93,8 @@ struct sockaddr_un {
};
#endif
+PHP_SOCKETS_API int php_sockets_le_socket(void);
+
/* Prototypes */
#ifdef ilia_0 /* not needed, only causes a compiler warning */
static int php_open_listen_sock(php_socket **php_sock, int port, int backlog TSRMLS_DC);
diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c
index 03d5c847d..6e74490a5 100644
--- a/ext/sockets/sockets.c
+++ b/ext/sockets/sockets.c
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sockets.c,v 1.171.2.9.2.14.2.20 2009/06/04 18:17:43 andrei Exp $ */
+/* $Id: sockets.c 289417 2009-10-09 14:22:29Z pajoye $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -323,6 +323,12 @@ ZEND_GET_MODULE(sockets)
/* inet_ntop should be used instead of inet_ntoa */
int inet_ntoa_lock = 0;
+PHP_SOCKETS_API int php_sockets_le_socket(void) /* {{{ */
+{
+ return le_socket;
+}
+/* }}} */
+
static void php_destroy_socket(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ */
{
php_socket *php_sock = (php_socket *) rsrc->ptr;
@@ -364,14 +370,14 @@ static int php_open_listen_sock(php_socket **php_sock, int port, int backlog TSR
sock->type = PF_INET;
- if (bind(sock->bsd_socket, (struct sockaddr *)&la, sizeof(la)) < 0) {
+ if (bind(sock->bsd_socket, (struct sockaddr *)&la, sizeof(la)) != 0) {
PHP_SOCKET_ERROR(sock, "unable to bind to given address", errno);
close(sock->bsd_socket);
efree(sock);
return 0;
}
- if (listen(sock->bsd_socket, backlog) < 0) {
+ if (listen(sock->bsd_socket, backlog) != 0) {
PHP_SOCKET_ERROR(sock, "unable to listen on socket", errno);
close(sock->bsd_socket);
efree(sock);
diff --git a/ext/sockets/tests/bug46360.phpt b/ext/sockets/tests/bug46360.phpt
new file mode 100644
index 000000000..c725a82f9
--- /dev/null
+++ b/ext/sockets/tests/bug46360.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Bug 46360 - TCP_NODELAY constant (sock_get_option, sock_set_option)
+--CREDITS--
+Florian Anderiasch
+fa@php.net
+--SKIPIF--
+<?php
+ if (version_compare(phpversion(), '5.2.7', '<')) {
+ die('skip old php, not eligible');
+ }
+?>
+--FILE--
+<?php
+ var_dump('TCP_NODELAY');
+?>
+--EXPECT--
+string(11) "TCP_NODELAY"
diff --git a/ext/sockets/tests/socket_bind.phpt b/ext/sockets/tests/socket_bind.phpt
new file mode 100644
index 000000000..15181e68a
--- /dev/null
+++ b/ext/sockets/tests/socket_bind.phpt
@@ -0,0 +1,38 @@
+--TEST--
+ext/sockets - socket_bind - basic test
+--CREDITS--
+Florian Anderiasch
+fa@php.net
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ die('skip - sockets extension not available.');
+ }
+?>
+--FILE--
+<?php
+ $rand = rand(1,999);
+ $s_c = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
+ $s_bind = socket_bind($s_c, '0.0.0.0', 31330+$rand);
+ var_dump($s_bind);
+
+ // Connect to destination address
+ $s_conn = socket_connect($s_c, 'www.php.net', 80);
+ var_dump($s_conn);
+
+ // Write
+ $request = 'GET / HTTP/1.1' . "\r\n";
+ $s_write = socket_write($s_c, $request);
+ var_dump($s_write);
+
+ // Close
+ $s_close = socket_close($s_c);
+ var_dump($s_close);
+?>
+
+--EXPECTF--
+bool(true)
+bool(true)
+int(16)
+NULL
+
diff --git a/ext/sockets/tests/socket_bind_params.phpt b/ext/sockets/tests/socket_bind_params.phpt
new file mode 100644
index 000000000..d68a62a47
--- /dev/null
+++ b/ext/sockets/tests/socket_bind_params.phpt
@@ -0,0 +1,29 @@
+--TEST--
+ext/sockets - socket_bind - test with empty parameters
+--CREDITS--
+Florian Anderiasch
+fa@php.net
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ die('skip - sockets extension not available.');
+ }
+?>
+--FILE--
+<?php
+ $rand = rand(1,999);
+ $s_c = socket_create_listen(31330+$rand);
+ $s_w = socket_bind();
+ var_dump($s_w);
+ $s_w = socket_bind($s_c);
+ var_dump($s_w);
+ socket_close($s_c);
+
+?>
+--EXPECTF--
+
+Warning: socket_bind() expects at least 2 parameters, 0 given in %s on line %i
+NULL
+
+Warning: socket_bind() expects at least 2 parameters, 1 given in %s on line %i
+NULL
diff --git a/ext/sockets/tests/socket_close_params.phpt b/ext/sockets/tests/socket_close_params.phpt
new file mode 100644
index 000000000..a00330f5e
--- /dev/null
+++ b/ext/sockets/tests/socket_close_params.phpt
@@ -0,0 +1,21 @@
+--TEST--
+ext/sockets - socket_close - test with empty parameters
+--CREDITS--
+Florian Anderiasch
+fa@php.net
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ die('skip - sockets extension not available.');
+ }
+?>
+--FILE--
+<?php
+ // wrong parameter count
+ $s_c = socket_close();
+ var_dump($s_c);
+?>
+--EXPECTF--
+
+Warning: socket_close() expects exactly 1 parameter, 0 given in %s on line %i
+NULL
diff --git a/ext/sockets/tests/socket_connect_error.phpt b/ext/sockets/tests/socket_connect_error.phpt
new file mode 100644
index 000000000..33e60f3d5
--- /dev/null
+++ b/ext/sockets/tests/socket_connect_error.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test error cases when creating a socket
+--CREDITS--
+Russell Flynn <russ@redpill-linpro.com>
+#PHPTestFest2009 Norway 2009-06-09 \o/
+--INI--
+error_reporting=E_ALL
+display_errors=1
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ echo 'skip sockets extension not available.';
+}
+?>
+--FILE--
+<?php
+ // Test with no arguments
+ $server = socket_create();
+
+ // Test with less arguments than required
+ $server = socket_create(SOCK_STREAM, getprotobyname('tcp'));
+
+ // Test with non integer parameters
+ $server = socket_create(array(), 1, 1);
+
+?>
+--EXPECTF--
+Warning: socket_create() expects exactly 3 parameters, 0 given in %s on line %d
+
+Warning: socket_create() expects exactly 3 parameters, 2 given in %s on line %d
+
+Warning: socket_create() expects parameter 1 to be long, array given in %s on line %d
+
diff --git a/ext/sockets/tests/socket_connect_params.phpt b/ext/sockets/tests/socket_connect_params.phpt
new file mode 100644
index 000000000..c8dff06e8
--- /dev/null
+++ b/ext/sockets/tests/socket_connect_params.phpt
@@ -0,0 +1,33 @@
+--TEST--
+ext/sockets - socket_connect - test with empty parameters
+--CREDITS--
+Florian Anderiasch
+fa@php.net
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ die('skip - sockets extension not available.');
+ }
+?>
+--FILE--
+<?php
+ $rand = rand(1,999);
+ $s_c = socket_create_listen(31330+$rand);
+ // wrong parameter count
+ $s_w = socket_connect();
+ $s_w = socket_connect($s_c);
+ $s_w = socket_connect($s_c, '0.0.0.0');
+ $s_w = socket_connect($s_c, '0.0.0.0', 31330+$rand);
+
+ socket_close($s_c);
+
+?>
+--EXPECTF--
+
+Warning: socket_connect() expects at least 2 parameters, 0 given in %s on line %i
+
+Warning: socket_connect() expects at least 2 parameters, 1 given in %s on line %i
+
+Warning: socket_connect(): Socket of type AF_INET requires 3 arguments in %s on line %i
+
+Warning: socket_connect(): unable to connect [%i]: Transport endpoint is already connected in %s on line %i
diff --git a/ext/sockets/tests/socket_create_listen.phpt b/ext/sockets/tests/socket_create_listen.phpt
index 6d607cab6..440fade61 100644
--- a/ext/sockets/tests/socket_create_listen.phpt
+++ b/ext/sockets/tests/socket_create_listen.phpt
@@ -1,5 +1,5 @@
--TEST--
-Test if socket binds on 31337
+Test if socket binds on 31338
--SKIPIF--
<?php
if (!extension_loaded('sockets')) {
@@ -7,12 +7,12 @@ if (!extension_loaded('sockets')) {
}
--FILE--
<?php
-$sock = socket_create_listen(31337);
+$sock = socket_create_listen(31338);
socket_getsockname($sock, $addr, $port);
var_dump($addr, $port);
--EXPECT--
string(7) "0.0.0.0"
-int(31337)
+int(31338)
--CREDITS--
Till Klampaeckel, till@php.net
PHP Testfest Berlin 2009-05-09
diff --git a/ext/sockets/tests/socket_create_listen_params.phpt b/ext/sockets/tests/socket_create_listen_params.phpt
new file mode 100644
index 000000000..56a9c8de2
--- /dev/null
+++ b/ext/sockets/tests/socket_create_listen_params.phpt
@@ -0,0 +1,23 @@
+--TEST--
+ext/sockets - socket_create_listen - test for empty parameters
+--CREDITS--
+Florian Anderiasch
+fa@php.net
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ die('skip - sockets extension not available.');
+ }
+?>
+--FILE--
+<?php
+ $rand = rand(1,999);
+ $s_c_l = socket_create_listen();
+ var_dump($s_c_l);
+ if ($s_c_l !== false) {
+ @socket_close($s_c_l);
+ }
+?>
+--EXPECTF--
+Warning: socket_create_listen() expects at least 1 parameter, 0 given in %s on line %i
+NULL
diff --git a/ext/sockets/tests/socket_create_listen_used.phpt b/ext/sockets/tests/socket_create_listen_used.phpt
new file mode 100644
index 000000000..d89f1b70e
--- /dev/null
+++ b/ext/sockets/tests/socket_create_listen_used.phpt
@@ -0,0 +1,30 @@
+--TEST--
+ext/sockets - socket_create_listen - test for used socket
+--CREDITS--
+Florian Anderiasch
+fa@php.net
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ die('skip - sockets extension not available.');
+ }
+?>
+--FILE--
+<?php
+ $rand = rand(1,999);
+ // wrong parameter count
+ $s_c_l = socket_create_listen(31330+$rand);
+ var_dump($s_c_l);
+ // default invocation
+ $s_c_l2 = socket_create_listen(31330+$rand);
+ var_dump($s_c_l2);
+ socket_close($s_c_l2);
+ socket_close($s_c_l);
+?>
+--EXPECTF--
+resource(%i) of type (Socket)
+
+Warning: socket_create_listen(): unable to bind to given address [%i]: Address already in use in %s on line %i
+bool(false)
+
+Warning: socket_close() expects parameter 1 to be resource, boolean given in %s on line %i
diff --git a/ext/sockets/tests/socket_create_pair-wrongparams.phpt b/ext/sockets/tests/socket_create_pair-wrongparams.phpt
index 64c5048ed..99512bcc3 100644
--- a/ext/sockets/tests/socket_create_pair-wrongparams.phpt
+++ b/ext/sockets/tests/socket_create_pair-wrongparams.phpt
@@ -24,17 +24,17 @@ NULL
Warning: socket_create_pair() expects parameter 1 to be long, %unicode_string_optional% given in %s on line %d
NULL
-Warning: socket_create_pair(): unable to create socket pair [94]: Socket type not supported in %s on line %d
+Warning: socket_create_pair(): unable to create socket pair [%d]: %s not supported in %s on line %d
bool(false)
Warning: socket_create_pair(): invalid socket domain [31337] specified for argument 1, assuming AF_INET in %s on line %d
-Warning: socket_create_pair(): unable to create socket pair [94]: Socket type not supported in %s on line %d
+Warning: socket_create_pair(): unable to create socket pair [%d]: %s not supported in %s on line %d
bool(false)
Warning: socket_create_pair(): invalid socket type [31337] specified for argument 2, assuming SOCK_STREAM in %s on line %d
-Warning: socket_create_pair(): unable to create socket pair [95]: Operation not supported in %s on line %d
+Warning: socket_create_pair(): unable to create socket pair [%d]: %s not supported %s on line %d
bool(false)
--CREDITS--
Till Klampaeckel, till@php.net
diff --git a/ext/sockets/tests/socket_create_params.phpt b/ext/sockets/tests/socket_create_params.phpt
new file mode 100644
index 000000000..13a1c73ee
--- /dev/null
+++ b/ext/sockets/tests/socket_create_params.phpt
@@ -0,0 +1,24 @@
+--TEST--
+ext/sockets - socket_create - test with empty parameters
+--CREDITS--
+Florian Anderiasch
+fa@php.net
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ die('skip sockets extension not available.');
+ }
+?>
+--FILE--
+<?php
+ $s_w = socket_create();
+ $s_w = socket_create(AF_INET);
+ $s_w = socket_create(AF_INET, SOCK_STREAM);
+?>
+--EXPECTF--
+
+Warning: socket_create() expects exactly 3 parameters, 0 given in %s on line %i
+
+Warning: socket_create() expects exactly 3 parameters, 1 given in %s on line %i
+
+Warning: socket_create() expects exactly 3 parameters, 2 given in %s on line %i
diff --git a/ext/sockets/tests/socket_getpeername.phpt b/ext/sockets/tests/socket_getpeername.phpt
new file mode 100644
index 000000000..2252992c0
--- /dev/null
+++ b/ext/sockets/tests/socket_getpeername.phpt
@@ -0,0 +1,33 @@
+--TEST--
+ext/sockets - socket_getsockname - basic test
+--CREDITS--
+Florian Anderiasch
+fa@php.net
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ die('skip sockets extension not available.');
+ }
+?>
+--FILE--
+<?php
+ $rand = rand(1,999);
+ $s_c = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
+ $s_bind = socket_bind($s_c, '0.0.0.0', 31330+$rand);
+ var_dump($s_bind);
+
+ // Connect to destination address
+ $s_peer = socket_getpeername($s_c, $ip, $port);
+ var_dump($s_peer);
+ var_dump($ip);
+ var_dump($port);
+ socket_close($s_c);
+?>
+
+--EXPECTF--
+bool(true)
+
+Warning: socket_getpeername(): unable to retrieve peer name [%i]: Transport endpoint is not connected in %s on line %i
+bool(false)
+NULL
+NULL
diff --git a/ext/sockets/tests/socket_getpeername_ipv4loop.phpt b/ext/sockets/tests/socket_getpeername_ipv4loop.phpt
new file mode 100644
index 000000000..aa59abb8d
--- /dev/null
+++ b/ext/sockets/tests/socket_getpeername_ipv4loop.phpt
@@ -0,0 +1,59 @@
+--TEST--
+ext/sockets - socket_getpeername_ipv4loop - basic test
+--CREDITS--
+# TestFest 2009 - NorwayUG
+# $Id: socket_getpeername_ipv4loop.phpt 494 2009-06-09 20:38:05Z tatjana.andersen@redpill-linpro.com $
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ die('skip sockets extension not available.');
+ }
+?>
+--FILE--
+<?php
+ /* Bind and connect sockets to localhost */
+ $localhost = '127.0.0.1';
+
+ /* Hold the port associated to address */
+ $port = 31337;
+
+ /* Setup socket server */
+ $server = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
+ if (!$server) {
+ die('Unable to create AF_INET socket [server]');
+ }
+
+ if (!socket_bind($server, $localhost, $port)) {
+ die('Unable to bind to '.$localhost.':'.$port);
+ }
+ if (!socket_listen($server, 2)) {
+ die('Unable to listen on socket');
+ }
+
+ /* Connect to it */
+ $client = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
+ if (!$client) {
+ die('Unable to create AF_INET socket [client]');
+ }
+ if (!socket_connect($client, $localhost, $port)) {
+ die('Unable to connect to server socket');
+ }
+
+ /* Accept that connection */
+ $socket = socket_accept($server);
+ if (!$socket) {
+ die('Unable to accept connection');
+ }
+
+ if (!socket_getpeername($client, $address, $port)) {
+ die('Unable to retrieve peer name');
+ }
+ var_dump($address, $port);
+
+ socket_close($client);
+ socket_close($socket);
+ socket_close($server);
+?>
+--EXPECT--
+string(9) "127.0.0.1"
+int(31337)
diff --git a/ext/sockets/tests/socket_getpeername_ipv6loop.phpt b/ext/sockets/tests/socket_getpeername_ipv6loop.phpt
new file mode 100644
index 000000000..ba3c1347d
--- /dev/null
+++ b/ext/sockets/tests/socket_getpeername_ipv6loop.phpt
@@ -0,0 +1,59 @@
+--TEST--
+ext/sockets - socket_getpeername_ipv6loop - basic test
+--CREDITS--
+# TestFest 2009 - NorwayUG
+# $Id: socket_getpeername_ipv6loop.phpt 494 2009-06-09 20:38:05Z tatjana.andersen@redpill-linpro.com $
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ die('skip sockets extension not available.');
+ }
+?>
+--FILE--
+<?php
+ /* Bind and connect sockets to localhost */
+ $localhost = '::1';
+
+ /* Hold the port associated to address */
+ $port = 31337;
+
+ /* Setup socket server */
+ $server = socket_create(AF_INET6, SOCK_STREAM, getprotobyname('tcp'));
+ if (!$server) {
+ die('Unable to create AF_INET6 socket [server]');
+ }
+
+ if (!socket_bind($server, $localhost, $port)) {
+ die('Unable to bind to '.$localhost.':'.$port);
+ }
+ if (!socket_listen($server, 2)) {
+ die('Unable to listen on socket');
+ }
+
+ /* Connect to it */
+ $client = socket_create(AF_INET6, SOCK_STREAM, getprotobyname('tcp'));
+ if (!$client) {
+ die('Unable to create AF_INET6 socket [client]');
+ }
+ if (!socket_connect($client, $localhost, $port)) {
+ die('Unable to connect to server socket');
+ }
+
+ /* Accept that connection */
+ $socket = socket_accept($server);
+ if (!$socket) {
+ die('Unable to accept connection');
+ }
+
+ if (!socket_getpeername($client, $address, $port)) {
+ die('Unable to retrieve peer name');
+ }
+ var_dump($address, $port);
+
+ socket_close($client);
+ socket_close($socket);
+ socket_close($server);
+?>
+--EXPECT--
+string(3) "::1"
+int(31337)
diff --git a/ext/sockets/tests/socket_getsockname.phpt b/ext/sockets/tests/socket_getsockname.phpt
new file mode 100644
index 000000000..877bef501
--- /dev/null
+++ b/ext/sockets/tests/socket_getsockname.phpt
@@ -0,0 +1,32 @@
+--TEST--
+ext/sockets - socket_getsockname - basic test
+--CREDITS--
+Florian Anderiasch
+fa@php.net
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ die('skip sockets extension not available.');
+ }
+?>
+--FILE--
+<?php
+ $rand = rand(1,999);
+ $s_c = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
+ $s_bind = socket_bind($s_c, '0.0.0.0', 31330+$rand);
+ var_dump($s_bind);
+
+ // Connect to destination address
+ $s_conn = socket_getsockname($s_c, $ip, $port);
+ var_dump($s_conn);
+ var_dump($ip);
+ var_dump($port);
+ socket_close($s_c);
+?>
+
+--EXPECTF--
+bool(true)
+bool(true)
+string(7) "0.0.0.0"
+int(%i)
+
diff --git a/ext/sockets/tests/socket_listen_params.phpt b/ext/sockets/tests/socket_listen_params.phpt
new file mode 100644
index 000000000..65c11170f
--- /dev/null
+++ b/ext/sockets/tests/socket_listen_params.phpt
@@ -0,0 +1,21 @@
+--TEST--
+ext/sockets - socket_listen - test with empty parameters
+--CREDITS--
+Florian Anderiasch
+fa@php.net
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ die('skip sockets extension not available.');
+ }
+?>
+--FILE--
+<?php
+ // wrong parameter count
+ $s_c = socket_listen();
+ var_dump($s_c);
+?>
+--EXPECTF--
+
+Warning: socket_listen() expects at least 1 parameter, 0 given in %s on line %i
+NULL
diff --git a/ext/sockets/tests/socket_read_params.phpt b/ext/sockets/tests/socket_read_params.phpt
new file mode 100644
index 000000000..69af710ca
--- /dev/null
+++ b/ext/sockets/tests/socket_read_params.phpt
@@ -0,0 +1,28 @@
+--TEST--
+ext/sockets - socket_read- test with empty parameters
+--CREDITS--
+Florian Anderiasch
+fa@php.net
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ die('skip sockets extension not available.');
+ }
+?>
+--FILE--
+<?php
+ $rand = rand(1,999);
+ // wrong parameter count
+ $s_c = socket_read();
+ $s_c = socket_read(14);
+ $s_c_l = socket_create_listen(31330+$rand);
+ $s_c = socket_read($s_c_l, 25);
+ socket_close($s_c_l);
+?>
+--EXPECTF--
+
+Warning: socket_read() expects at least 2 parameters, 0 given in %s on line %i
+
+Warning: socket_read() expects at least 2 parameters, 1 given in %s on line %i
+
+Warning: socket_read(): unable to read from socket [%i]: Transport endpoint is not connected in %s on line %i
diff --git a/ext/sockets/tests/socket_sentto_recvfrom_ipv4_udp.phpt b/ext/sockets/tests/socket_sentto_recvfrom_ipv4_udp.phpt
index 64b657a48..8b7ed0bd3 100644
--- a/ext/sockets/tests/socket_sentto_recvfrom_ipv4_udp.phpt
+++ b/ext/sockets/tests/socket_sentto_recvfrom_ipv4_udp.phpt
@@ -44,7 +44,7 @@ if (!extension_loaded('sockets')) {
socket_close($socket);
--EXPECTF--
-Warning: socket_recvfrom(): unable to recvfrom [11]: Resource temporarily unavailable in %s on line %d
+Warning: socket_recvfrom(): unable to recvfrom [%d]: Resource temporarily unavailable in %s on line %d
Warning: Wrong parameter count for socket_sendto() in %s on line %d
diff --git a/ext/sockets/tests/socket_sentto_recvfrom_unix.phpt b/ext/sockets/tests/socket_sentto_recvfrom_unix.phpt
index 94eac3bdf..ab111898b 100644
--- a/ext/sockets/tests/socket_sentto_recvfrom_unix.phpt
+++ b/ext/sockets/tests/socket_sentto_recvfrom_unix.phpt
@@ -26,8 +26,10 @@ if (!extension_loaded('sockets')) {
$bytes_sent = socket_sendto($socket, $msg, $len, 0); // cause warning
$bytes_sent = socket_sendto($socket, $msg, $len, 0, $address);
if ($bytes_sent == -1) {
+ @unlink($address);
die('An error occured while sending to the socket');
} else if ($bytes_sent != $len) {
+ @unlink($address);
die($bytes_sent . ' bytes have been sent instead of the ' . $len . ' bytes expected');
}
@@ -35,17 +37,21 @@ if (!extension_loaded('sockets')) {
var_dump(socket_recvfrom($socket, $buf, 0, 0, $from)); // expect false
$bytes_received = socket_recvfrom($socket, $buf, 12, 0, $from);
if ($bytes_received == -1) {
+ @unlink($address);
die('An error occured while receiving from the socket');
} else if ($bytes_received != $len) {
+ @unlink($address);
die($bytes_received . ' bytes have been received instead of the ' . $len . ' bytes expected');
}
echo "Received $buf";
socket_close($socket);
+ @unlink($address);
+?>
--EXPECTF--
-Warning: socket_create(): Unable to create socket [93]: Protocol not supported in %s on line %d
+Warning: socket_create(): Unable to create socket [%d]: Protocol not supported in %s on line %d
-Warning: socket_recvfrom(): unable to recvfrom [11]: Resource temporarily unavailable in %s on line %d
+Warning: socket_recvfrom(): unable to recvfrom [%d]: Resource temporarily unavailable in %s on line %d
Warning: socket_sendto() expects at least 5 parameters, 4 given in %s on line %d
bool(false)
diff --git a/ext/sockets/tests/socket_set_block-retval.phpt b/ext/sockets/tests/socket_set_block-retval.phpt
index fe09d5a5b..2aa4b0e5c 100644
--- a/ext/sockets/tests/socket_set_block-retval.phpt
+++ b/ext/sockets/tests/socket_set_block-retval.phpt
@@ -9,11 +9,11 @@ if (!extension_loaded('sockets')) {
--FILE--
<?php
-$socket = socket_create_listen(31337);
+$socket = socket_create_listen(31339);
var_dump(socket_set_block($socket));
socket_close($socket);
-$socket2 = socket_create_listen(31338);
+$socket2 = socket_create_listen(31340);
socket_close($socket2);
var_dump(socket_set_block($socket2));
diff --git a/ext/sockets/tests/socket_set_nonblock-retval.phpt b/ext/sockets/tests/socket_set_nonblock-retval.phpt
index 3c4b5151a..b90861859 100644
--- a/ext/sockets/tests/socket_set_nonblock-retval.phpt
+++ b/ext/sockets/tests/socket_set_nonblock-retval.phpt
@@ -9,11 +9,11 @@ if (!extension_loaded('sockets')) {
--FILE--
<?php
-$socket = socket_create_listen(31337);
+$socket = socket_create_listen(31339);
var_dump(socket_set_nonblock($socket));
socket_close($socket);
-$socket2 = socket_create_listen(31338);
+$socket2 = socket_create_listen(31340);
socket_close($socket2);
var_dump(socket_set_nonblock($socket2));
diff --git a/ext/sockets/tests/socket_set_nonblock.phpt b/ext/sockets/tests/socket_set_nonblock.phpt
new file mode 100644
index 000000000..55137d358
--- /dev/null
+++ b/ext/sockets/tests/socket_set_nonblock.phpt
@@ -0,0 +1,24 @@
+--TEST--
+ext/sockets - socket_set_block - basic test
+--CREDITS--
+Florian Anderiasch
+fa@php.net
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ die('skip sockets extension not available.');
+ }
+?>
+--FILE--
+<?php
+ $rand = rand(1,999);
+ $s_c_l = socket_create_listen(31330+$rand);
+ socket_set_nonblock($s_c_l);
+ var_dump($s_c_l);
+ #socket_accept($s_c_l);
+ socket_close($s_c_l);
+?>
+
+--EXPECTF--
+resource(%i) of type (Socket)
+
diff --git a/ext/sockets/tests/socket_strerror.phpt b/ext/sockets/tests/socket_strerror.phpt
new file mode 100644
index 000000000..074d2ff7f
--- /dev/null
+++ b/ext/sockets/tests/socket_strerror.phpt
@@ -0,0 +1,154 @@
+--TEST--
+ext/sockets - socket_strerror - basic test
+--CREDITS--
+Florian Anderiasch
+fa@php.net
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ die('skip sockets extension not available.');
+ }
+?>
+--FILE--
+<?php
+ $s_s = socket_strerror();
+ for ($i=0;$i<=132;$i++) {
+ var_dump(socket_strerror($i));
+ }
+?>
+--EXPECTF--
+
+Warning: socket_strerror() expects exactly 1 parameter, 0 given in %s on line %i
+string(7) "Success"
+string(23) "Operation not permitted"
+string(25) "No such file or directory"
+string(15) "No such process"
+string(23) "Interrupted system call"
+string(18) "Input/output error"
+string(25) "No such device or address"
+string(22) "Argument list too long"
+string(17) "Exec format error"
+string(19) "Bad file descriptor"
+string(18) "No child processes"
+string(32) "Resource temporarily unavailable"
+string(22) "Cannot allocate memory"
+string(17) "Permission denied"
+string(11) "Bad address"
+string(21) "Block device required"
+string(23) "Device or resource busy"
+string(11) "File exists"
+string(25) "Invalid cross-device link"
+string(14) "No such device"
+string(15) "Not a directory"
+string(14) "Is a directory"
+string(16) "Invalid argument"
+string(29) "Too many open files in system"
+string(19) "Too many open files"
+string(30) "Inappropriate ioctl for device"
+string(14) "Text file busy"
+string(14) "File too large"
+string(23) "No space left on device"
+string(12) "Illegal seek"
+string(21) "Read-only file system"
+string(14) "Too many links"
+string(11) "Broken pipe"
+string(32) "Numerical argument out of domain"
+string(29) "Numerical result out of range"
+string(25) "Resource deadlock avoided"
+string(18) "File name too long"
+string(18) "No locks available"
+string(24) "Function not implemented"
+string(19) "Directory not empty"
+string(33) "Too many levels of symbolic links"
+string(16) "Unknown error 41"
+string(26) "No message of desired type"
+string(18) "Identifier removed"
+string(27) "Channel number out of range"
+string(24) "Level 2 not synchronized"
+string(14) "Level 3 halted"
+string(13) "Level 3 reset"
+string(24) "Link number out of range"
+string(28) "Protocol driver not attached"
+string(26) "No CSI structure available"
+string(14) "Level 2 halted"
+string(16) "Invalid exchange"
+string(26) "Invalid request descriptor"
+string(13) "Exchange full"
+string(8) "No anode"
+string(20) "Invalid request code"
+string(12) "Invalid slot"
+string(16) "Unknown error 58"
+string(20) "Bad font file format"
+string(19) "Device not a stream"
+string(17) "No data available"
+string(13) "Timer expired"
+string(24) "Out of streams resources"
+string(29) "Machine is not on the network"
+string(21) "Package not installed"
+string(16) "Object is remote"
+string(21) "Link has been severed"
+string(15) "Advertise error"
+string(13) "Srmount error"
+string(27) "Communication error on send"
+string(14) "Protocol error"
+string(18) "Multihop attempted"
+string(18) "RFS specific error"
+string(11) "Bad message"
+string(37) "Value too large for defined data type"
+string(26) "Name not unique on network"
+string(28) "File descriptor in bad state"
+string(22) "Remote address changed"
+string(38) "Can not access a needed shared library"
+string(36) "Accessing a corrupted shared library"
+string(31) ".lib section in a.out corrupted"
+string(47) "Attempting to link in too many shared libraries"
+string(37) "Cannot exec a shared library directly"
+string(49) "Invalid or incomplete multibyte or wide character"
+string(43) "Interrupted system call should be restarted"
+string(18) "Streams pipe error"
+string(14) "Too many users"
+string(30) "Socket operation on non-socket"
+string(28) "Destination address required"
+string(16) "Message too long"
+string(30) "Protocol wrong type for socket"
+string(22) "Protocol not available"
+string(22) "Protocol not supported"
+string(25) "Socket type not supported"
+string(23) "Operation not supported"
+string(29) "Protocol family not supported"
+string(40) "Address family not supported by protocol"
+string(22) "Address already in use"
+string(31) "Cannot assign requested address"
+string(15) "Network is down"
+string(22) "Network is unreachable"
+string(35) "Network dropped connection on reset"
+string(32) "Software caused connection abort"
+string(24) "Connection reset by peer"
+string(25) "No buffer space available"
+string(39) "Transport endpoint is already connected"
+string(35) "Transport endpoint is not connected"
+string(45) "Cannot send after transport endpoint shutdown"
+string(34) "Too many references: cannot splice"
+string(20) "Connection timed out"
+string(18) "Connection refused"
+string(12) "Host is down"
+string(16) "No route to host"
+string(29) "Operation already in progress"
+string(25) "Operation now in progress"
+string(21) "Stale NFS file handle"
+string(24) "Structure needs cleaning"
+string(27) "Not a XENIX named type file"
+string(29) "No XENIX semaphores available"
+string(20) "Is a named type file"
+string(16) "Remote I/O error"
+string(19) "Disk quota exceeded"
+string(15) "No medium found"
+string(17) "Wrong medium type"
+string(18) "Operation canceled"
+string(26) "Required key not available"
+string(15) "Key has expired"
+string(20) "Key has been revoked"
+string(27) "Key was rejected by service"
+string(10) "Owner died"
+string(21) "State not recoverable"
+string(17) "Unknown error 132"
diff --git a/ext/sockets/tests/socket_write_params.phpt b/ext/sockets/tests/socket_write_params.phpt
new file mode 100644
index 000000000..e23766ea6
--- /dev/null
+++ b/ext/sockets/tests/socket_write_params.phpt
@@ -0,0 +1,28 @@
+--TEST--
+ext/sockets - socket_write - test with empty parameters
+--CREDITS--
+Florian Anderiasch
+fa@php.net
+--SKIPIF--
+<?php
+ if (!extension_loaded('sockets')) {
+ die('skip sockets extension not available.');
+ }
+?>
+--FILE--
+<?php
+ $rand = rand(1,999);
+ // wrong parameter count
+ $s_w = socket_write();
+ $s_c = socket_create_listen(31330+$rand);
+ $s_w = socket_write($s_c);
+ $s_w = socket_write($s_c, "foo");
+ socket_close($s_c);
+?>
+--EXPECTF--
+
+Warning: socket_write() expects at least 2 parameters, 0 given in %s on line %i
+
+Warning: socket_write() expects at least 2 parameters, 1 given in %s on line %i
+
+Warning: socket_write(): unable to write to socket [%i]: Broken pipe in %s on line %i
diff --git a/ext/sockets/unix_socket_constants.h b/ext/sockets/unix_socket_constants.h
index 96dd7fbea..8403425c9 100644
--- a/ext/sockets/unix_socket_constants.h
+++ b/ext/sockets/unix_socket_constants.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: unix_socket_constants.h,v 1.5.2.1.2.1.2.2 2008/12/31 11:15:43 sebastian Exp $ */
+/* $Id: unix_socket_constants.h 272370 2008-12-31 11:15:49Z sebastian $ */
/* This file is to be included by sockets.c */
diff --git a/ext/sockets/win32_socket_constants.h b/ext/sockets/win32_socket_constants.h
index e2738ca37..f593ec674 100644
--- a/ext/sockets/win32_socket_constants.h
+++ b/ext/sockets/win32_socket_constants.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: win32_socket_constants.h,v 1.5.2.1.2.1.2.2 2008/12/31 11:15:43 sebastian Exp $ */
+/* $Id: win32_socket_constants.h 272370 2008-12-31 11:15:49Z sebastian $ */
/* This file is to be included by sockets.c */