]> 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 65d2ef0aa559b0e39384c37d2efe4073787ebc27..798daee1f63544e2f958b19f39ecbcd80c922c00 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)) {