Ticket #42634: 42634-fix-socket-parsing-ipv6.diff
File 42634-fix-socket-parsing-ipv6.diff, 1.7 KB (added by , 7 years ago) |
---|
-
src/wp-includes/wp-db.php
1643 1643 $socket = null; 1644 1644 $is_ipv6 = false; 1645 1645 1646 // First peel off the socket parameter from the right, if it exists. 1647 $socket_pos = strpos( $host, ':/' ); 1648 if ( $socket_pos !== false ) { 1649 $socket = substr( $host, $socket_pos + 1 ); 1650 $host = substr( $host, 0, $socket_pos ); 1651 } 1652 1646 1653 // We need to check for an IPv6 address first. 1647 1654 // An IPv6 address will always contain at least two colons. 1648 1655 if ( substr_count( $host, ':' ) > 1 ) { 1649 $pattern = '#^(?:\[)?(?<host>[0-9a-fA-F:]+)(?:\]:(?<port>[\d]+))? (?:/(?<socket>.+))?#';1656 $pattern = '#^(?:\[)?(?<host>[0-9a-fA-F:]+)(?:\]:(?<port>[\d]+))?#'; 1650 1657 $is_ipv6 = true; 1651 1658 } else { 1652 1659 // We seem to be dealing with an IPv4 address. 1653 $pattern = '#^(?<host>[^:/]*)(?::(?<port>[\d]+))? (?::(?<socket>.+))?#';1660 $pattern = '#^(?<host>[^:/]*)(?::(?<port>[\d]+))?#'; 1654 1661 } 1655 1662 1656 1663 $matches = array(); … … 1662 1669 } 1663 1670 1664 1671 $host = ''; 1665 foreach ( array( 'host', 'port' , 'socket') as $component ) {1672 foreach ( array( 'host', 'port' ) as $component ) { 1666 1673 if ( ! empty( $matches[ $component ] ) ) { 1667 1674 $$component = $matches[ $component ]; 1668 1675 } -
tests/phpunit/tests/db.php
1559 1559 false, 1560 1560 ), 1561 1561 array( 1562 ':/tmp/mysql:with_colon.sock', 1563 false, 1564 '', 1565 null, 1566 '/tmp/mysql:with_colon.sock', 1567 false, 1568 ), 1569 array( 1562 1570 '127.0.0.1', 1563 1571 false, 1564 1572 '127.0.0.1',