Author: ahristov
Date: 2007-08-15 18:55:24 +0200 (Wed, 15 Aug 2007)
New Revision: 916
Modified:
trunk/php5/ext/mysqli/mysqli_nonapi.c
Log:
Backport recent changes to PHP5
Modified: trunk/php5/ext/mysqli/mysqli_nonapi.c
===================================================================
--- trunk/php5/ext/mysqli/mysqli_nonapi.c 2007-08-15 16:43:29 UTC (rev 915)
+++ trunk/php5/ext/mysqli/mysqli_nonapi.c 2007-08-15 16:55:24 UTC (rev 916)
@@ -76,6 +76,9 @@
mysql = (MY_MYSQL *) ecalloc(1, sizeof(MY_MYSQL));
if (strlen(SAFE_STR(hostname)) > 2 && !strncasecmp(hostname, "p:", 2)) {
+ if (!MyG(allow_persistent)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Persistent connections are disabled.
Downgrading to normal");
+ }
mysql->persistent = persistent = TRUE;
hostname += 2;
@@ -108,21 +111,27 @@
#endif
goto end;
}
+ MyG(num_links)--;
zend_hash_del(&EG(persistent_list), hash_key, hash_len + 1);
}
}
}
+ if (MyG(max_links) != -1 && MyG(num_links) >= MyG(max_links)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Too many open links (%ld)",
MyG(num_links));
+ goto err;
+ }
+ if (persistent && MyG(max_persistent) != -1 && MyG(num_persistent) >=
MyG(max_persistent)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Too many open persistent links (%ld)",
MyG(num_persistent));
+ goto err;
+ }
+
#if !defined(HAVE_MYSQLND)
if (!(mysql->mysql = mysql_init(NULL))) {
#else
if (!(mysql->mysql = mysqlnd_init(persistent))) {
#endif
- efree(mysql);
- if (persistent) {
- efree(hash_key);
- }
- RETURN_FALSE;
+ goto err;
}
new_connection = TRUE;
@@ -149,11 +158,7 @@
/* free mysql structure */
mysqli_close(mysql->mysql, MYSQLI_CLOSE_DISCONNECTED);
- efree(mysql);
- if (persistent) {
- efree(hash_key);
- }
- RETURN_FALSE;
+ goto err;
}
/* clear error */
@@ -186,8 +191,10 @@
}
}
if (persistent) {
+ MyG(num_persistent)++;
efree(hash_key);
}
+ MyG(num_links)++;
#if !defined(HAVE_MYSQLND)
mysql->multi_query = 0;
@@ -200,7 +207,14 @@
} else {
((mysqli_object *) zend_object_store_get_object(object TSRMLS_CC))->ptr =
mysqli_resource;
}
+ return;
+err:
+ efree(mysql);
+ if (persistent) {
+ efree(hash_key);
+ }
+ RETURN_FALSE;
}
/* }}} */
| Thread |
|---|
| • PHP mysqlnd svn commit: r916 - trunk/php5/ext/mysqli | ahristov | 15 Aug |