--TEST--
mysql_[p]connect() - max_links/max_persistent
--SKIPIF--
<?php
require_once('skipif.inc');
require_once(
'skipifconnectfailure.inc');
require_once(
'table.inc');

mysql_query('DROP USER pcontest'$link);
if (!
mysql_query('CREATE USER pcontest IDENTIFIED BY "pcontest"'$link)) {
    
printf("skip Cannot create second DB user [%d] %s"mysql_errno($link), mysql_error($link));
    
mysql_close($link);
    die();
}

// we might be able to specify the host using CURRENT_USER(), but...
if (!mysql_query(sprintf("GRANT SELECT ON TABLE %s.test TO pcontest@'%%'"$db), $link)) {
    
printf("skip Cannot GRANT SELECT to second DB user [%d] %s"mysql_errno($link), mysql_error($link));
    
mysql_query('REVOKE ALL PRIVILEGES, GRANT OPTION FROM pcontest'$link);
    
mysql_query('DROP USER pcontest'$link);
    
mysql_close($link);
    die();
}
mysql_close($link);
?>
--INI--
mysql.max_links=2
mysql.allow_persistent=1
mysql.max_persistent=1
--FILE--
<?php
require_once('connect.inc');

function 
my_connect($offset$host$user$passwd$db$port$socket) {
    if (
$socket)
        
$host sprintf("%s:%s"$host$socket);
    else if (
$port)
        
$host sprintf("%s:%s"$host$port);


    
$link mysql_pconnect($host$user$passwd);
    if (!
$link) {
        
printf("[%03d] Cannot connect using host '%s', user '%s', password '****', [%d] %s\n",
            
$offset$host$user$passwd,
            
mysql_errno(), mysql_error());
        return 
false;
    }

    if (!
mysql_select_db($db$link))
        return 
false;

    return 
$link;
}

$links = array();

// try to open 2 links
$links[0] = my_connect(10$host$user$passwd$db$port$socket);
$links[1] = my_connect(20$host'pcontest''pcontest'$db$port$socket);
if (
false !== $links[1])
    
printf("[030] Last connection should not have been allowed!\n");

// free some links but let index 1 remain
unset($links[1]);
mysql_close($links[0]);
unset(
$links[0]);

// should be allowed -> only open connection
$links[0] = my_connect(40$host$user$passwd$db$port$socket);
var_dump($links);

mysql_query('REVOKE ALL PRIVILEGES, GRANT OPTION FROM pcontest'$links[0]);
mysql_query('DROP USER pcontest'$links[0]);

mysql_close($links[0]);
print 
"done!\n";
?>
--CLEAN--
<?php
// connect + select_db
require_once("connect.inc");
if (!
$link my_mysql_connect($host$user$passwd$db$port$socket)) {
    
printf("[c001] Cannot connect to the server using host=%s/%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
       
$host$myhost$user$db$port$socket);
}

@
mysql_query('REVOKE ALL PRIVILEGES, GRANT OPTION FROM pcontest'$link);
@
mysql_query('DROP USER pcontest'$link);

mysql_close($link);
?>
--EXPECTF--
Warning: mysql_pconnect(): Too many open persistent links (1) in %s on line %d
[020] Cannot connect using host '%s', user '%s', password '****', [0] 0
array(1) {
  [0]=>
  resource(%d) of type (mysql link persistent)
}
done!