mirror of
https://github.com/zeek/zeek.git
synced 2025-10-05 16:18:19 +00:00
Add support to MySQL for deprecation of EOF packets.
From the docs: "As of MySQL 5.7.5, OK packes are also used to indicate EOF, and EOF packets are deprecated." The client sets a capability flag (CLIENT_DEPRECATE_EOF) to indicate that it expects an OK instead of an EOF after the resultset rows.
This commit is contained in:
parent
c38e1fa91a
commit
5a1a9ba98e
1 changed files with 23 additions and 2 deletions
|
@ -151,6 +151,11 @@ enum Expected {
|
||||||
EXPECT_AUTH_SWITCH,
|
EXPECT_AUTH_SWITCH,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum Client_Capabilities {
|
||||||
|
# Expects an OK (instead of EOF) after the resultset rows of a Text Resultset.
|
||||||
|
CLIENT_DEPRECATE_EOF = 0x01000000,
|
||||||
|
};
|
||||||
|
|
||||||
type NUL_String = RE/[^\0]*\0/;
|
type NUL_String = RE/[^\0]*\0/;
|
||||||
|
|
||||||
# MySQL PDU
|
# MySQL PDU
|
||||||
|
@ -230,6 +235,8 @@ type Handshake_Response_Packet_v10 = record {
|
||||||
pad : padding[23];
|
pad : padding[23];
|
||||||
username : NUL_String;
|
username : NUL_String;
|
||||||
password : bytestring &restofdata;
|
password : bytestring &restofdata;
|
||||||
|
} &let {
|
||||||
|
deprecate_eof: bool = $context.connection.set_deprecate_eof(cap_flags & CLIENT_DEPRECATE_EOF);
|
||||||
};
|
};
|
||||||
|
|
||||||
type Handshake_Response_Packet_v9 = record {
|
type Handshake_Response_Packet_v9 = record {
|
||||||
|
@ -315,8 +322,9 @@ type ColumnDefinitionOrEOF(pkt_len: uint32) = record {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
type EOF1 = record {
|
type EOF1 = case $context.connection.get_deprecate_eof() of {
|
||||||
eof: EOF_Packet;
|
false -> eof: EOF_Packet;
|
||||||
|
true -> ok: OK_Packet;
|
||||||
} &let {
|
} &let {
|
||||||
update_result_seen: bool = $context.connection.set_results_seen(0);
|
update_result_seen: bool = $context.connection.set_results_seen(0);
|
||||||
update_expectation: bool = $context.connection.set_next_expected(EXPECT_RESULTSET);
|
update_expectation: bool = $context.connection.set_next_expected(EXPECT_RESULTSET);
|
||||||
|
@ -403,6 +411,7 @@ refine connection MySQL_Conn += {
|
||||||
uint32 col_count_;
|
uint32 col_count_;
|
||||||
uint32 remaining_cols_;
|
uint32 remaining_cols_;
|
||||||
uint32 results_seen_;
|
uint32 results_seen_;
|
||||||
|
bool deprecate_eof_;
|
||||||
%}
|
%}
|
||||||
|
|
||||||
%init{
|
%init{
|
||||||
|
@ -412,6 +421,7 @@ refine connection MySQL_Conn += {
|
||||||
col_count_ = 0;
|
col_count_ = 0;
|
||||||
remaining_cols_ = 0;
|
remaining_cols_ = 0;
|
||||||
results_seen_ = 0;
|
results_seen_ = 0;
|
||||||
|
deprecate_eof_ = false;
|
||||||
%}
|
%}
|
||||||
|
|
||||||
function get_version(): uint8
|
function get_version(): uint8
|
||||||
|
@ -436,6 +446,17 @@ refine connection MySQL_Conn += {
|
||||||
return true;
|
return true;
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
function get_deprecate_eof(): bool
|
||||||
|
%{
|
||||||
|
return deprecate_eof_;
|
||||||
|
%}
|
||||||
|
|
||||||
|
function set_deprecate_eof(d: bool): bool
|
||||||
|
%{
|
||||||
|
deprecate_eof_ = d;
|
||||||
|
return true;
|
||||||
|
%}
|
||||||
|
|
||||||
function get_expectation(): Expected
|
function get_expectation(): Expected
|
||||||
%{
|
%{
|
||||||
return expected_;
|
return expected_;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue