summaryrefslogtreecommitdiffstats
path: root/php-7.0.0-odbctimer.patch
diff options
context:
space:
mode:
Diffstat (limited to 'php-7.0.0-odbctimer.patch')
-rw-r--r--php-7.0.0-odbctimer.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/php-7.0.0-odbctimer.patch b/php-7.0.0-odbctimer.patch
new file mode 100644
index 0000000..6f43dcd
--- /dev/null
+++ b/php-7.0.0-odbctimer.patch
@@ -0,0 +1,45 @@
+diff -up php-src-02be73b5fac63a02313b9fe0f204c65d4828edeb/ext/odbc/php_odbc.c.odbctimer php-src-02be73b5fac63a02313b9fe0f204c65d4828edeb/ext/odbc/php_odbc.c
+--- php-src-02be73b5fac63a02313b9fe0f204c65d4828edeb/ext/odbc/php_odbc.c.odbctimer 2015-03-25 07:01:04.000000000 +0100
++++ php-src-02be73b5fac63a02313b9fe0f204c65d4828edeb/ext/odbc/php_odbc.c 2015-03-25 08:45:27.265011747 +0100
+@@ -431,7 +431,8 @@ static void _free_odbc_result(zend_resou
+ efree(res->values);
+ res->values = NULL;
+ }
+- if (res->stmt) {
++ /* If aborted via timer expiration, don't try to call any unixODBC function */
++ if (res->stmt && !(PG(connection_status) & PHP_CONNECTION_TIMEOUT)) {
+ #if defined(HAVE_SOLID) || defined(HAVE_SOLID_30) || defined(HAVE_SOLID_35)
+ SQLTransact(res->conn_ptr->henv, res->conn_ptr->hdbc,
+ (SQLUSMALLINT) SQL_COMMIT);
+@@ -481,9 +482,12 @@ static void _close_odbc_conn(zend_resour
+ }
+ } ZEND_HASH_FOREACH_END();
+
+- safe_odbc_disconnect(conn->hdbc);
+- SQLFreeConnect(conn->hdbc);
+- SQLFreeEnv(conn->henv);
++ /* If aborted via timer expiration, don't try to call any unixODBC function */
++ if (!(PG(connection_status) & PHP_CONNECTION_TIMEOUT)) {
++ safe_odbc_disconnect(conn->hdbc);
++ SQLFreeConnect(conn->hdbc);
++ SQLFreeEnv(conn->henv);
++ }
+ efree(conn);
+ ODBCG(num_links)--;
+ }
+@@ -506,9 +510,12 @@ static void _close_odbc_pconn(zend_resou
+ }
+ } ZEND_HASH_FOREACH_END();
+
+- safe_odbc_disconnect(conn->hdbc);
+- SQLFreeConnect(conn->hdbc);
+- SQLFreeEnv(conn->henv);
++ /* If aborted via timer expiration, don't try to call any unixODBC function */
++ if (!(PG(connection_status) & PHP_CONNECTION_TIMEOUT)) {
++ safe_odbc_disconnect(conn->hdbc);
++ SQLFreeConnect(conn->hdbc);
++ SQLFreeEnv(conn->henv);
++ }
+ free(conn);
+
+ ODBCG(num_links)--;