From: Antony Dovgal Date: Wed, 18 Oct 2006 14:22:04 +0000 (+0000) Subject: fix PECL bug #9061 (oci8 might reuse wrong persistent connection) X-Git-Tag: RELEASE_1_0_0RC1~1258 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4579e4cc9e3afd59b0a98645dd698ffcb74668c0;p=php fix PECL bug #9061 (oci8 might reuse wrong persistent connection) --- diff --git a/ext/oci8/oci8.c b/ext/oci8/oci8.c index 8314e71fe1..0956504a32 100644 --- a/ext/oci8/oci8.c +++ b/ext/oci8/oci8.c @@ -1104,15 +1104,19 @@ php_oci_connection *php_oci_do_connect_ex(char *username, int username_len, char /* server died */ } else { int rsrc_type; + php_oci_connection *tmp; /* okay, the connection is open and the server is still alive */ connection->used_this_request = 1; - smart_str_free_ex(&hashed_details, 0); - if (zend_list_find(connection->rsrc_id, &rsrc_type) && (rsrc_type == le_pconnection) && zend_list_addref(connection->rsrc_id) == SUCCESS) { + tmp = (php_oci_connection *)zend_list_find(connection->rsrc_id, &rsrc_type); + + if (tmp != NULL && rsrc_type == le_pconnection && strlen(tmp->hash_key) == hashed_details.len && + memcmp(tmp->hash_key, hashed_details.c, hashed_details.len) == 0 && zend_list_addref(connection->rsrc_id) == SUCCESS) { /* do nothing */ } else { connection->rsrc_id = zend_list_insert(connection, le_pconnection); } + smart_str_free_ex(&hashed_details, 0); return connection; } }