]> granicus.if.org Git - php/commitdiff
Fix persistent connection leak in mysqli
authorNikita Popov <nikita.ppv@gmail.com>
Wed, 26 Jun 2019 14:51:12 +0000 (16:51 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 27 Jun 2019 07:45:32 +0000 (09:45 +0200)
ext/mysqli/mysqli_nonapi.c

index d6c474b7f39e14405918678f821899eab5d2c3e9..2f272935b3a534e96408964cd71bec86f15b8d20 100644 (file)
@@ -162,6 +162,12 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_conne
 
                                        do {
                                                if (zend_ptr_stack_num_elements(&plist->free_links)) {
+                                                       /* If we have an initialized (but unconnected) mysql resource,
+                                                        * close it before we reuse an existing persistent resource. */
+                                                       if (mysql->mysql) {
+                                                               mysqli_close(mysql->mysql, MYSQLI_CLOSE_IMPLICIT);
+                                                       }
+
                                                        mysql->mysql = zend_ptr_stack_pop(&plist->free_links);
 
                                                        MyG(num_inactive_persistent)--;