cataphract                               Sat, 26 Nov 2011 17:48:52 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=319963

Log:
- Small ajustments to some multicast options.

Changed paths:
    U   php/php-src/branches/PHP_5_4/ext/sockets/sockets.c
    A   
php/php-src/branches/PHP_5_4/ext/sockets/tests/mcast_ipv4_send_error.phpt
    U   php/php-src/trunk/ext/sockets/sockets.c
    A   php/php-src/trunk/ext/sockets/tests/mcast_ipv4_send_error.phpt

Modified: php/php-src/branches/PHP_5_4/ext/sockets/sockets.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/sockets/sockets.c  2011-11-26 17:35:19 UTC 
(rev 319962)
+++ php/php-src/branches/PHP_5_4/ext/sockets/sockets.c  2011-11-26 17:48:52 UTC 
(rev 319963)
@@ -2189,8 +2189,16 @@
                        goto dosockopt;

                case IP_MULTICAST_LOOP:
+                       convert_to_boolean_ex(arg4);
+                       goto ipv4_loop_ttl;
                case IP_MULTICAST_TTL:
                        convert_to_long_ex(arg4);
+                       if (Z_LVAL_PP(arg4) < 0L || Z_LVAL_PP(arg4) > 255L) {
+                               php_error_docref(NULL TSRMLS_CC, E_WARNING,
+                                               "Expected a value between 0 and 
255");
+                               RETURN_FALSE;
+                       }
+ipv4_loop_ttl:
                        ipv4_mcast_ttl_lback = (unsigned char) Z_LVAL_PP(arg4);
                        opt_ptr = &ipv4_mcast_ttl_lback;
                        optlen  = sizeof(ipv4_mcast_ttl_lback);
@@ -2225,8 +2233,16 @@
                        goto dosockopt;

                case IPV6_MULTICAST_LOOP:
+                       convert_to_boolean_ex(arg4);
+                       goto ipv6_loop_hops;
                case IPV6_MULTICAST_HOPS:
                        convert_to_long_ex(arg4);
+                       if (Z_LVAL_PP(arg4) < -1L || Z_LVAL_PP(arg4) > 255L) {
+                               php_error_docref(NULL TSRMLS_CC, E_WARNING,
+                                               "Expected a value between -1 
and 255");
+                               RETURN_FALSE;
+                       }
+ipv6_loop_hops:
                        ov = (int) Z_LVAL_PP(arg4);
                        opt_ptr = &ov;
                        optlen  = sizeof(ov);

Added: php/php-src/branches/PHP_5_4/ext/sockets/tests/mcast_ipv4_send_error.phpt
===================================================================
--- php/php-src/branches/PHP_5_4/ext/sockets/tests/mcast_ipv4_send_error.phpt   
                        (rev 0)
+++ php/php-src/branches/PHP_5_4/ext/sockets/tests/mcast_ipv4_send_error.phpt   
2011-11-26 17:48:52 UTC (rev 319963)
@@ -0,0 +1,79 @@
+--TEST--
+Multicast support: IPv4 send options with unusual values
+--SKIPIF--
+<?php
+if (!extension_loaded('sockets')) {
+    die('skip sockets extension not available.');
+}
+if (socket_set_option($s, $level, IP_MULTICAST_IF, 1) === false) {
+       die("skip interface 1 either doesn't exist or has no ipv4 address");
+}
+--FILE--
+<?php
+$domain = AF_INET;
+$level = IPPROTO_IP;
+$s = socket_create($domain, SOCK_DGRAM, SOL_UDP) or die("err");
+
+echo "Setting IP_MULTICAST_LOOP with 256\n";
+//if we had a simple cast to unsigned char, this would be the same as 0
+$r = socket_set_option($s, $level, IP_MULTICAST_LOOP, 256);
+var_dump($r);
+$r = socket_get_option($s, $level, IP_MULTICAST_LOOP);
+var_dump($r);
+echo "\n";
+
+echo "Setting IP_MULTICAST_LOOP with false\n";
+//should convert to (unsigned char)0
+$r = socket_set_option($s, $level, IP_MULTICAST_LOOP, false);
+var_dump($r);
+$r = socket_get_option($s, $level, IP_MULTICAST_LOOP);
+var_dump($r);
+echo "\n";
+
+echo "Setting IP_MULTICAST_TTL with 256\n";
+//if we had a simple cast to unsigned char, this would be the same as 0
+$r = socket_set_option($s, $level, IP_MULTICAST_TTL, 256);
+var_dump($r);
+$r = socket_get_option($s, $level, IP_MULTICAST_TTL);
+var_dump($r);
+echo "\n";
+
+echo "Setting IP_MULTICAST_TTL with \"254\"\n";
+$r = socket_set_option($s, $level, IP_MULTICAST_TTL, "254");
+var_dump($r);
+$r = socket_get_option($s, $level, IP_MULTICAST_TTL);
+var_dump($r);
+echo "\n";
+
+echo "Setting IP_MULTICAST_TTL with -1\n";
+//should give error, not be the same as 255
+$r = socket_set_option($s, $level, IP_MULTICAST_TTL, -1);
+var_dump($r);
+$r = socket_get_option($s, $level, IP_MULTICAST_TTL);
+var_dump($r);
+echo "\n";
+
+--EXPECTF--
+Setting IP_MULTICAST_LOOP with 256
+bool(true)
+int(1)
+
+Setting IP_MULTICAST_LOOP with false
+bool(true)
+int(0)
+
+Setting IP_MULTICAST_TTL with 256
+
+Warning: socket_set_option(): Expected a value between 0 and 255 in %s on line 
%d
+bool(false)
+int(1)
+
+Setting IP_MULTICAST_TTL with "254"
+bool(true)
+int(254)
+
+Setting IP_MULTICAST_TTL with -1
+
+Warning: socket_set_option(): Expected a value between 0 and 255 in %s on line 
%d
+bool(false)
+int(254)


Property changes on: 
php/php-src/branches/PHP_5_4/ext/sockets/tests/mcast_ipv4_send_error.phpt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision
Added: svn:eol-style
   + native

Modified: php/php-src/trunk/ext/sockets/sockets.c
===================================================================
--- php/php-src/trunk/ext/sockets/sockets.c     2011-11-26 17:35:19 UTC (rev 
319962)
+++ php/php-src/trunk/ext/sockets/sockets.c     2011-11-26 17:48:52 UTC (rev 
319963)
@@ -2189,8 +2189,16 @@
                        goto dosockopt;

                case IP_MULTICAST_LOOP:
+                       convert_to_boolean_ex(arg4);
+                       goto ipv4_loop_ttl;
                case IP_MULTICAST_TTL:
                        convert_to_long_ex(arg4);
+                       if (Z_LVAL_PP(arg4) < 0L || Z_LVAL_PP(arg4) > 255L) {
+                               php_error_docref(NULL TSRMLS_CC, E_WARNING,
+                                               "Expected a value between 0 and 
255");
+                               RETURN_FALSE;
+                       }
+ipv4_loop_ttl:
                        ipv4_mcast_ttl_lback = (unsigned char) Z_LVAL_PP(arg4);
                        opt_ptr = &ipv4_mcast_ttl_lback;
                        optlen  = sizeof(ipv4_mcast_ttl_lback);
@@ -2225,8 +2233,16 @@
                        goto dosockopt;

                case IPV6_MULTICAST_LOOP:
+                       convert_to_boolean_ex(arg4);
+                       goto ipv6_loop_hops;
                case IPV6_MULTICAST_HOPS:
                        convert_to_long_ex(arg4);
+                       if (Z_LVAL_PP(arg4) < -1L || Z_LVAL_PP(arg4) > 255L) {
+                               php_error_docref(NULL TSRMLS_CC, E_WARNING,
+                                               "Expected a value between -1 
and 255");
+                               RETURN_FALSE;
+                       }
+ipv6_loop_hops:
                        ov = (int) Z_LVAL_PP(arg4);
                        opt_ptr = &ov;
                        optlen  = sizeof(ov);

Added: php/php-src/trunk/ext/sockets/tests/mcast_ipv4_send_error.phpt
===================================================================
--- php/php-src/trunk/ext/sockets/tests/mcast_ipv4_send_error.phpt              
                (rev 0)
+++ php/php-src/trunk/ext/sockets/tests/mcast_ipv4_send_error.phpt      
2011-11-26 17:48:52 UTC (rev 319963)
@@ -0,0 +1,79 @@
+--TEST--
+Multicast support: IPv4 send options with unusual values
+--SKIPIF--
+<?php
+if (!extension_loaded('sockets')) {
+    die('skip sockets extension not available.');
+}
+if (socket_set_option($s, $level, IP_MULTICAST_IF, 1) === false) {
+       die("skip interface 1 either doesn't exist or has no ipv4 address");
+}
+--FILE--
+<?php
+$domain = AF_INET;
+$level = IPPROTO_IP;
+$s = socket_create($domain, SOCK_DGRAM, SOL_UDP) or die("err");
+
+echo "Setting IP_MULTICAST_LOOP with 256\n";
+//if we had a simple cast to unsigned char, this would be the same as 0
+$r = socket_set_option($s, $level, IP_MULTICAST_LOOP, 256);
+var_dump($r);
+$r = socket_get_option($s, $level, IP_MULTICAST_LOOP);
+var_dump($r);
+echo "\n";
+
+echo "Setting IP_MULTICAST_LOOP with false\n";
+//should convert to (unsigned char)0
+$r = socket_set_option($s, $level, IP_MULTICAST_LOOP, false);
+var_dump($r);
+$r = socket_get_option($s, $level, IP_MULTICAST_LOOP);
+var_dump($r);
+echo "\n";
+
+echo "Setting IP_MULTICAST_TTL with 256\n";
+//if we had a simple cast to unsigned char, this would be the same as 0
+$r = socket_set_option($s, $level, IP_MULTICAST_TTL, 256);
+var_dump($r);
+$r = socket_get_option($s, $level, IP_MULTICAST_TTL);
+var_dump($r);
+echo "\n";
+
+echo "Setting IP_MULTICAST_TTL with \"254\"\n";
+$r = socket_set_option($s, $level, IP_MULTICAST_TTL, "254");
+var_dump($r);
+$r = socket_get_option($s, $level, IP_MULTICAST_TTL);
+var_dump($r);
+echo "\n";
+
+echo "Setting IP_MULTICAST_TTL with -1\n";
+//should give error, not be the same as 255
+$r = socket_set_option($s, $level, IP_MULTICAST_TTL, -1);
+var_dump($r);
+$r = socket_get_option($s, $level, IP_MULTICAST_TTL);
+var_dump($r);
+echo "\n";
+
+--EXPECTF--
+Setting IP_MULTICAST_LOOP with 256
+bool(true)
+int(1)
+
+Setting IP_MULTICAST_LOOP with false
+bool(true)
+int(0)
+
+Setting IP_MULTICAST_TTL with 256
+
+Warning: socket_set_option(): Expected a value between 0 and 255 in %s on line 
%d
+bool(false)
+int(1)
+
+Setting IP_MULTICAST_TTL with "254"
+bool(true)
+int(254)
+
+Setting IP_MULTICAST_TTL with -1
+
+Warning: socket_set_option(): Expected a value between 0 and 255 in %s on line 
%d
+bool(false)
+int(254)


Property changes on: 
php/php-src/trunk/ext/sockets/tests/mcast_ipv4_send_error.phpt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision
Added: svn:eol-style
   + native

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to