]> granicus.if.org Git - php/commitdiff
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:43:14 +0000 (23:43 +0000)
committerAndrey Hristov <andrey@php.net>
Tue, 22 Jul 2008 23:43:14 +0000 (23:43 +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 c767d849a98e500ef515c1672f5b348d1987d09c..b51b70f7db222cfbd34d21004496c8fde3c460cf 100644 (file)
@@ -802,6 +802,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) {
                                        if (UG(unicode)) {
@@ -1005,15 +1008,6 @@ PHP_FUNCTION(mysql_close)
        
        ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink);
 
-#ifdef MYSQL_USE_MYSQLND
-       {
-               int tmp;
-               if ((mysql = zend_list_find(Z_RESVAL_PP(mysql_link), &tmp)) && tmp == le_plink) {
-                       mysqlnd_end_psession(mysql->conn);
-               }
-       }
-#endif
-
        if (id==-1) { /* explicit resource number */
                PHPMY_UNBUFFERED_QUERY_CHECK();
                zend_list_delete(Z_RESVAL_PP(mysql_link));
index 6b25127eff05ce7bac384eabd03718e67cec2c0c..4898e712ea2884881734a139506dc5ab5f25486a 100644 (file)
@@ -157,6 +157,9 @@ 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