]> granicus.if.org Git - php/commitdiff
Fix leak with persistent connections when using mysqli.default_host is used
authorUlf Wendel <uw@php.net>
Fri, 1 Oct 2010 08:54:16 +0000 (08:54 +0000)
committerUlf Wendel <uw@php.net>
Fri, 1 Oct 2010 08:54:16 +0000 (08:54 +0000)
ext/mysqli/mysqli_nonapi.c

index 4334fc53c9abcbf297f24b779b0b6e21c31944a2..1d75dac8132a39fba6829a43e98550fc06dd7a73 100644 (file)
@@ -123,10 +123,6 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_conne
                        flags &= ~CLIENT_LOCAL_FILES;
                }
        }
-       if (mysql->mysql && mysqli_resource && (mysqli_resource->status > MYSQLI_STATUS_INITIALIZED || (strlen(SAFE_STR(hostname)) > 2 && !strncasecmp(hostname, "p:", 2)))) {
-               /* already connected, we should close the connection */
-               php_mysqli_close(mysql, MYSQLI_CLOSE_IMPLICIT, mysqli_resource->status TSRMLS_CC);
-       }
 
        if (!socket_len || !socket) {
                socket = MyG(default_socket);
@@ -145,6 +141,11 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_conne
                hostname = MyG(default_host);
        }
 
+       if (mysql->mysql && mysqli_resource && (mysqli_resource->status > MYSQLI_STATUS_INITIALIZED || (strlen(SAFE_STR(hostname)) > 2 && !strncasecmp(hostname, "p:", 2)))) {
+                /* already connected, we should close the connection */
+                php_mysqli_close(mysql, MYSQLI_CLOSE_IMPLICIT, mysqli_resource->status TSRMLS_CC);
+        }
+
        if (strlen(SAFE_STR(hostname)) > 2 && !strncasecmp(hostname, "p:", 2)) {
                hostname += 2;
                if (!MyG(allow_persistent)) {