From 51c3a5c84023671903af2879c8f85f3dd1e8344d Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Thu, 27 Jun 2019 16:50:39 +0200 Subject: MDEV-19893 Do not send error packets with seqno= 0 --- sql/protocol.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'sql/protocol.cc') diff --git a/sql/protocol.cc b/sql/protocol.cc index 8b7e0cbcbea..aa795b9d12a 100644 --- a/sql/protocol.cc +++ b/sql/protocol.cc @@ -461,6 +461,17 @@ bool net_send_error_packet(THD *thd, uint sql_errno, const char *err, */ if ((save_compress= net->compress)) net->compress= 2; + + /* + Sometimes, we send errors "out-of-band", e.g ER_CONNECTION_KILLED + on an idle connection. The current protocol "sequence number" is 0, + however some client drivers would however always expect packets + coming from server to have seq_no > 0, due to missing awareness + of "out-of-band" operations. Make these clients happy. + */ + if (!net->pkt_nr) + net->pkt_nr= 1; + ret= net_write_command(net,(uchar) 255, (uchar*) "", 0, (uchar*) buff, length); net->compress= save_compress; -- cgit v1.2.1