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