mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
- shift a bit of code around
- when cloning use the methods of the original object
This commit is contained in:
parent
9e7cc71167
commit
29f88a003f
2 changed files with 14 additions and 14 deletions
|
@ -1698,6 +1698,12 @@ MYSQLND_METHOD(mysqlnd_conn_data, send_close)(MYSQLND_CONN_DATA * const conn TSR
|
|||
DBG_INF_FMT("conn=%llu conn->net->stream->abstract=%p",
|
||||
conn->thread_id, conn->net->stream? conn->net->stream->abstract:NULL);
|
||||
|
||||
if (CONN_GET_STATE(conn) >= CONN_READY) {
|
||||
MYSQLND_DEC_CONN_STATISTIC(conn->stats, STAT_OPENED_CONNECTIONS);
|
||||
if (conn->persistent) {
|
||||
MYSQLND_DEC_CONN_STATISTIC(conn->stats, STAT_OPENED_PERSISTENT_CONNECTIONS);
|
||||
}
|
||||
}
|
||||
switch (CONN_GET_STATE(conn)) {
|
||||
case CONN_READY:
|
||||
DBG_INF("Connection clean, sending COM_QUIT");
|
||||
|
@ -2652,24 +2658,18 @@ MYSQLND_METHOD(mysqlnd_conn, close)(MYSQLND * conn_handle, enum_connection_close
|
|||
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_methods, close);
|
||||
MYSQLND_CONN_DATA * conn = conn_handle->data;
|
||||
enum_func_status ret = FAIL;
|
||||
static enum_mysqlnd_collected_stats
|
||||
close_type_to_stat_map[MYSQLND_CLOSE_LAST] = {
|
||||
STAT_CLOSE_EXPLICIT,
|
||||
STAT_CLOSE_IMPLICIT,
|
||||
STAT_CLOSE_DISCONNECT
|
||||
};
|
||||
enum_mysqlnd_collected_stats statistic = close_type_to_stat_map[close_type];
|
||||
|
||||
DBG_ENTER("mysqlnd_conn::close");
|
||||
DBG_INF_FMT("conn=%llu", conn->thread_id);
|
||||
|
||||
if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) {
|
||||
if (CONN_GET_STATE(conn) >= CONN_READY) {
|
||||
MYSQLND_INC_CONN_STATISTIC(conn->stats, statistic);
|
||||
MYSQLND_DEC_CONN_STATISTIC(conn->stats, STAT_OPENED_CONNECTIONS);
|
||||
if (conn->persistent) {
|
||||
MYSQLND_DEC_CONN_STATISTIC(conn->stats, STAT_OPENED_PERSISTENT_CONNECTIONS);
|
||||
}
|
||||
static enum_mysqlnd_collected_stats close_type_to_stat_map[MYSQLND_CLOSE_LAST] = {
|
||||
STAT_CLOSE_EXPLICIT,
|
||||
STAT_CLOSE_IMPLICIT,
|
||||
STAT_CLOSE_DISCONNECT
|
||||
};
|
||||
MYSQLND_INC_CONN_STATISTIC(conn->stats, close_type_to_stat_map[close_type]);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2678,7 +2678,7 @@ MYSQLND_METHOD(mysqlnd_conn, close)(MYSQLND * conn_handle, enum_connection_close
|
|||
*/
|
||||
ret = conn->m->send_close(conn TSRMLS_CC);
|
||||
|
||||
/* do it after free_reference and we might crash */
|
||||
/* do it after free_reference/dtor and we might crash */
|
||||
conn->m->local_tx_end(conn, this_func, ret TSRMLS_CC);
|
||||
|
||||
conn_handle->m->dtor(conn_handle TSRMLS_CC);
|
||||
|
|
|
@ -175,7 +175,7 @@ MYSQLND_METHOD(mysqlnd_object_factory, clone_connection_object)(MYSQLND * to_be_
|
|||
DBG_RETURN(NULL);
|
||||
}
|
||||
new_object->persistent = to_be_cloned->persistent;
|
||||
new_object->m = mysqlnd_conn_get_methods();
|
||||
new_object->m = to_be_cloned->m;
|
||||
|
||||
new_object->data = to_be_cloned->data->m->get_reference(to_be_cloned->data TSRMLS_CC);
|
||||
if (!new_object->data) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue