summaryrefslogtreecommitdiff
path: root/ext/mysql/php_mysql.c
diff options
context:
space:
mode:
authorAndrey Hristov <andrey@php.net>2008-06-24 13:19:29 +0000
committerAndrey Hristov <andrey@php.net>2008-06-24 13:19:29 +0000
commit943e9a577ba41cfc066e22640465f3bf1717faeb (patch)
tree7b7b7d5267de19fd821886ebcc550ad6425d4551 /ext/mysql/php_mysql.c
parentff83deb66d1ebbeb965888e7d19459bdd9488cf9 (diff)
downloadphp-git-943e9a577ba41cfc066e22640465f3bf1717faeb.tar.gz
Fix double-free, introduced lately
Diffstat (limited to 'ext/mysql/php_mysql.c')
-rw-r--r--ext/mysql/php_mysql.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c
index 0e5319cb21..594a1de623 100644
--- a/ext/mysql/php_mysql.c
+++ b/ext/mysql/php_mysql.c
@@ -365,6 +365,9 @@ static void _close_mysql_plink(zend_rsrc_list_entry *rsrc TSRMLS_DC)
void (*handler) (int);
handler = signal(SIGPIPE, SIG_IGN);
+#ifdef MYSQL_USE_MYSQLND
+ mysqlnd_end_psession(link->conn);
+#endif
mysql_close(link->conn);
signal(SIGPIPE, handler);
@@ -775,11 +778,12 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
/* ensure that the link did not die */
if (mysql_ping(mysql->conn)) {
if (mysql_errno(mysql->conn) == 2006) {
-#ifndef MYSQL_USE_MYSQLND
- if (mysql_real_connect(mysql->conn, host, user, passwd, NULL, port, socket, client_flags)==NULL)
-#else
+#ifdef MYSQL_USE_MYSQLND
+ mysqlnd_end_psession(mysql->conn);
if (mysqlnd_connect(mysql->conn, host, user, passwd, 0, NULL, 0,
port, socket, client_flags, MySG(mysqlnd_thd_zval_cache) TSRMLS_CC) == NULL)
+#else
+ if (mysql_real_connect(mysql->conn, host, user, passwd, NULL, port, socket, client_flags)==NULL)
#endif
{
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Link to server lost, unable to reconnect");