]> granicus.if.org Git - php/commitdiff
MFH: Two less failing tests, one of which was definitely a leak in mysqli with mysqlnd
authorAndrey Hristov <andrey@php.net>
Tue, 22 Jul 2008 23:44:23 +0000 (23:44 +0000)
committerAndrey Hristov <andrey@php.net>
Tue, 22 Jul 2008 23:44:23 +0000 (23:44 +0000)
     and pconn. ext/mysql is being fixed with a better fix for similar leak.

ext/mysql/php_mysql.c
ext/mysqli/mysqli_nonapi.c

index 6908b294bdeb9bdd516b991d334e9187e3f0dd8c..237bdb54e89c8da63158035fa0c3885120726012 100644 (file)
@@ -794,6 +794,9 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                        mysql->active_result_id = 0;
                        mysql->multi_query = client_flags & CLIENT_MULTI_STATEMENTS? 1:0;
                        /* ensure that the link did not die */
+#if defined(MYSQL_USE_MYSQLND)
+                       mysqlnd_end_psession(mysql->conn);
+#endif 
                        if (mysql_ping(mysql->conn)) {
                                if (mysql_errno(mysql->conn) == 2006) {
 #ifndef MYSQL_USE_MYSQLND
index 8c67e307995fd0e719322e0a4128d771c27be548..4cc654e2747b22ab40b85184a613d30d980e1686 100644 (file)
@@ -162,8 +162,12 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_conne
                                                        mysql->mysql = zend_ptr_stack_pop(&plist->free_links);
 
                                                        MyG(num_inactive_persistent)--;
+#if defined(MYSQLI_USE_MYSQLND)
+                                                       mysqlnd_end_psession(mysql->mysql);
+#endif 
                                                        /* reset variables */
                                                        /* todo: option for ping or change_user */
+
 #if G0
                                                        if (!mysql_change_user(mysql->mysql, username, passwd, dbname)) {
 #else
@@ -175,9 +179,6 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_conne
                                                                MyG(num_active_persistent)++;
                                                                goto end;
                                                        } else {
-#if defined(MYSQLI_USE_MYSQLND)
-                                                               mysqlnd_end_psession(mysql->mysql);
-#endif 
                                                                mysqli_close(mysql->mysql, MYSQLI_CLOSE_IMPLICIT);
                                                                mysql->mysql = NULL;
                                                        }