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,
|
||||
};
|
||||
|
||||
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/;
|
||||
|
||||
# MySQL PDU
|
||||
|
@ -230,6 +235,8 @@ type Handshake_Response_Packet_v10 = record {
|
|||
pad : padding[23];
|
||||
username : NUL_String;
|
||||
password : bytestring &restofdata;
|
||||
} &let {
|
||||
deprecate_eof: bool = $context.connection.set_deprecate_eof(cap_flags & CLIENT_DEPRECATE_EOF);
|
||||
};
|
||||
|
||||
type Handshake_Response_Packet_v9 = record {
|
||||
|
@ -315,8 +322,9 @@ type ColumnDefinitionOrEOF(pkt_len: uint32) = record {
|
|||
};
|
||||
|
||||
|
||||
type EOF1 = record {
|
||||
eof: EOF_Packet;
|
||||
type EOF1 = case $context.connection.get_deprecate_eof() of {
|
||||
false -> eof: EOF_Packet;
|
||||
true -> ok: OK_Packet;
|
||||
} &let {
|
||||
update_result_seen: bool = $context.connection.set_results_seen(0);
|
||||
update_expectation: bool = $context.connection.set_next_expected(EXPECT_RESULTSET);
|
||||
|
@ -403,6 +411,7 @@ refine connection MySQL_Conn += {
|
|||
uint32 col_count_;
|
||||
uint32 remaining_cols_;
|
||||
uint32 results_seen_;
|
||||
bool deprecate_eof_;
|
||||
%}
|
||||
|
||||
%init{
|
||||
|
@ -412,6 +421,7 @@ refine connection MySQL_Conn += {
|
|||
col_count_ = 0;
|
||||
remaining_cols_ = 0;
|
||||
results_seen_ = 0;
|
||||
deprecate_eof_ = false;
|
||||
%}
|
||||
|
||||
function get_version(): uint8
|
||||
|
@ -436,6 +446,17 @@ refine connection MySQL_Conn += {
|
|||
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
|
||||
%{
|
||||
return expected_;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue