Merge branch 'PHP-8.2' into PHP-8.3

* PHP-8.2:
  ext/mysqlnd: support ER_CLIENT_INTERACTION_TIMEOUT
This commit is contained in:
Kamil Tekiela 2024-04-10 13:35:14 +02:00
commit acf9047346
No known key found for this signature in database
GPG key ID: 0760BDAB1E89A1E3
4 changed files with 52 additions and 2 deletions

View file

@ -267,6 +267,19 @@ mysqlnd_read_header(MYSQLND_PFC * pfc, MYSQLND_VIO * vio, MYSQLND_PACKET_HEADER
pfc->data->packet_no++;
DBG_RETURN(PASS);
}
// @see https://dev.mysql.com/worklog/task/?id=12999
if (header->size > 0) {
zend_uchar *buf = mnd_emalloc(header->size);
if ((PASS == pfc->data->m.receive(pfc, vio, buf, header->size, conn_stats, error_info)) && buf[0] == ERROR_MARKER) {
php_mysqlnd_read_error_from_line(buf + 1, header->size - 1,
error_info->error, sizeof(error_info->error),
&error_info->error_no, error_info->sqlstate
);
mnd_efree(buf);
DBG_RETURN(FAIL);
}
mnd_efree(buf);
}
DBG_ERR_FMT("Logical link: packets out of order. Expected %u received %u. Packet size=%zu",
pfc->data->packet_no, header->packet_no, header->size);
@ -294,7 +307,9 @@ mysqlnd_read_packet_header_and_body(MYSQLND_PACKET_HEADER * packet_header,
DBG_INF_FMT("buf=%p size=%zu", buf, buf_size);
if (FAIL == mysqlnd_read_header(pfc, vio, packet_header, stats, error_info)) {
SET_CONNECTION_STATE(connection_state, CONN_QUIT_SENT);
SET_CLIENT_ERROR(error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone);
if (error_info->error_no == 0) {
SET_CLIENT_ERROR(error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone);
}
DBG_ERR_FMT("Can't read %s's header", packet_type_as_text);
DBG_RETURN(FAIL);
}