]> granicus.if.org Git - php/commitdiff
Simplify unique string generation and plug a leak.
authorAndrey Hristov <andrey@php.net>
Mon, 4 Feb 2008 17:55:06 +0000 (17:55 +0000)
committerAndrey Hristov <andrey@php.net>
Mon, 4 Feb 2008 17:55:06 +0000 (17:55 +0000)
ext/mysqlnd/mysqlnd.c

index d1703a252a57936e273ab752aeca8cffc4b992a8..e40de9fa66f378ca7899098281a3bd923294ee4f 100644 (file)
@@ -28,8 +28,6 @@
 #include "mysqlnd_charset.h"
 #include "mysqlnd_debug.h"
 #include "mysqlnd_block_alloc.h"
-#include "ext/standard/basic_functions.h"
-#include "ext/standard/php_lcg.h"
 
 /* the server doesn't support 4byte utf8, but let's make it forward compatible */
 #define MYSQLND_MAX_ALLOWED_USER_LEN   256  /* 64 char * 4byte */
@@ -544,15 +542,6 @@ PHPAPI MYSQLND *mysqlnd_connect(MYSQLND *conn,
        }
        DBG_INF_FMT("transport=%p", transport);
 
-       if (conn->persistent) {
-               struct timeval tv;
-               gettimeofday(&tv, NULL);
-               /* We should generate something unique */
-               hashed_details_len = spprintf(&hashed_details, 0, "%s@%s@%s@%ld@%ld@%0.8F",
-                                                                         transport, user, db, tv.tv_sec, (long int)tv.tv_usec,
-                                                                         php_combined_lcg(TSRMLS_C) * 10);
-               DBG_INF_FMT("hashed_details=%s", hashed_details);
-       } 
 
        PACKET_INIT_ALLOCA(greet_packet, PROT_GREET_PACKET);
        PACKET_INIT(auth_packet, PROT_AUTH_PACKET, php_mysql_packet_auth *);
@@ -563,6 +552,19 @@ PHPAPI MYSQLND *mysqlnd_connect(MYSQLND *conn,
                self_alloced = TRUE;
        }
 
+       if (conn->persistent) {
+#if 0
+               struct timeval tv;
+               gettimeofday(&tv, NULL);
+               /* We should generate something unique */
+               hashed_details_len = spprintf(&hashed_details, 0, "%s@%s@%s@%ld@%ld@%0.8F",
+                                                                         transport, user, db, tv.tv_sec, (long int)tv.tv_usec,
+                                                                         php_combined_lcg(TSRMLS_C) * 10);
+#endif
+               hashed_details_len = spprintf(&hashed_details, 0, "%p", conn);
+               DBG_INF_FMT("hashed_details=%s", hashed_details);
+       } 
+
        CONN_SET_STATE(conn, CONN_ALLOCED);
        conn->net.packet_no = 0;
 
@@ -584,6 +586,9 @@ PHPAPI MYSQLND *mysqlnd_connect(MYSQLND *conn,
        DBG_INF_FMT("stream=%p", conn->net.stream);
 
        if (errstr || !conn->net.stream) {
+               if (hashed_details) {
+                       mnd_efree(hashed_details);
+               }
                goto err;
        }