mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Merge branch 'PHP-8.3'
This commit is contained in:
commit
d24086b7ba
4 changed files with 2 additions and 52 deletions
|
@ -1,34 +0,0 @@
|
||||||
--TEST--
|
|
||||||
Bug #81335: Packets out of order after connection timeout
|
|
||||||
--EXTENSIONS--
|
|
||||||
mysqli
|
|
||||||
--SKIPIF--
|
|
||||||
<?php
|
|
||||||
if (PHP_OS === 'WINNT') die('skip on windows');
|
|
||||||
if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
|
|
||||||
|
|
||||||
require_once 'connect.inc';
|
|
||||||
if (!$link = @my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) die("skip cannot connect");
|
|
||||||
if (mysqli_get_server_version($link) < 80024 || str_contains(mysqli_get_server_info($link), 'MariaDB')) {
|
|
||||||
die("skip: Due to many MySQL Server differences, the test requires >= 8.0.24");
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
--FILE--
|
|
||||||
<?php
|
|
||||||
|
|
||||||
require_once 'connect.inc';
|
|
||||||
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
|
|
||||||
$mysqli = new my_mysqli($host, $user, $passwd, $db, $port, $socket);
|
|
||||||
$mysqli->query('SET WAIT_TIMEOUT=1');
|
|
||||||
usleep(1000000 * 1.1);
|
|
||||||
try {
|
|
||||||
$mysqli->query('SELECT 1 + 1');
|
|
||||||
} catch(mysqli_sql_exception $e) {
|
|
||||||
echo $e->getMessage();
|
|
||||||
echo "\n";
|
|
||||||
echo $e->getCode();
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
--EXPECTF--
|
|
||||||
The client was disconnected by the server because of inactivity. See wait_timeout and interactive_timeout for configuring this behavior.
|
|
||||||
4031
|
|
|
@ -130,7 +130,6 @@
|
||||||
#define CR_INVALID_PARAMETER_NO 2034
|
#define CR_INVALID_PARAMETER_NO 2034
|
||||||
#define CR_INVALID_BUFFER_USE 2035
|
#define CR_INVALID_BUFFER_USE 2035
|
||||||
#define CR_LOAD_DATA_LOCAL_INFILE_REJECTED 2068
|
#define CR_LOAD_DATA_LOCAL_INFILE_REJECTED 2068
|
||||||
#define CR_CLIENT_INTERACTION_TIMEOUT 4031
|
|
||||||
|
|
||||||
#define MYSQLND_EE_FILENOTFOUND 7890
|
#define MYSQLND_EE_FILENOTFOUND 7890
|
||||||
|
|
||||||
|
|
|
@ -183,7 +183,7 @@ mysqlnd_query_read_result_set_header(MYSQLND_CONN_DATA * conn, MYSQLND_STMT * s)
|
||||||
UPSERT_STATUS_SET_AFFECTED_ROWS_TO_ERROR(conn->upsert_status);
|
UPSERT_STATUS_SET_AFFECTED_ROWS_TO_ERROR(conn->upsert_status);
|
||||||
|
|
||||||
if (FAIL == (ret = PACKET_READ(conn, &rset_header))) {
|
if (FAIL == (ret = PACKET_READ(conn, &rset_header))) {
|
||||||
if (conn->error_info->error_no != CR_SERVER_GONE_ERROR && conn->error_info->error_no != CR_CLIENT_INTERACTION_TIMEOUT) {
|
if (conn->error_info->error_no != CR_SERVER_GONE_ERROR) {
|
||||||
php_error_docref(NULL, E_WARNING, "Error reading result set's header");
|
php_error_docref(NULL, E_WARNING, "Error reading result set's header");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -267,19 +267,6 @@ mysqlnd_read_header(MYSQLND_PFC * pfc, MYSQLND_VIO * vio, MYSQLND_PACKET_HEADER
|
||||||
pfc->data->packet_no++;
|
pfc->data->packet_no++;
|
||||||
DBG_RETURN(PASS);
|
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",
|
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);
|
pfc->data->packet_no, header->packet_no, header->size);
|
||||||
|
@ -307,9 +294,7 @@ mysqlnd_read_packet_header_and_body(MYSQLND_PACKET_HEADER * packet_header,
|
||||||
DBG_INF_FMT("buf=%p size=%zu", buf, buf_size);
|
DBG_INF_FMT("buf=%p size=%zu", buf, buf_size);
|
||||||
if (FAIL == mysqlnd_read_header(pfc, vio, packet_header, stats, error_info)) {
|
if (FAIL == mysqlnd_read_header(pfc, vio, packet_header, stats, error_info)) {
|
||||||
SET_CONNECTION_STATE(connection_state, CONN_QUIT_SENT);
|
SET_CONNECTION_STATE(connection_state, CONN_QUIT_SENT);
|
||||||
if (error_info->error_no == 0) {
|
SET_CLIENT_ERROR(error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone);
|
||||||
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_ERR_FMT("Can't read %s's header", packet_type_as_text);
|
||||||
DBG_RETURN(FAIL);
|
DBG_RETURN(FAIL);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue