Fix and test parser_error_packet() for non-SQL errors.

This commit is contained in:
Daniel Nichter
2013-01-25 11:24:35 -07:00
parent 20ace5a9e9
commit 15b1c43874
7 changed files with 273 additions and 12 deletions

View File

@@ -612,7 +612,8 @@ sub _packet_from_server {
}
my $event;
if ( $session->{state} eq 'client_auth' ) {
if ( $session->{state} eq 'client_auth'
|| $session->{state} eq 'server_handshake' ) {
PTDEBUG && _d('Connection failed');
$event = {
cmd => 'Admin',
@@ -1070,9 +1071,17 @@ sub parse_error_packet {
}
my $errno = to_num(substr($data, 0, 4));
my $marker = to_string(substr($data, 4, 2));
return unless $marker eq '#';
my $sqlstate = to_string(substr($data, 6, 10));
my $message = to_string(substr($data, 16));
my $sqlstate = '';
my $message = '';
if ( $marker eq '#' ) {
$sqlstate = to_string(substr($data, 6, 10));
$message = to_string(substr($data, 16));
}
else {
$marker = '';
$message = to_string(substr($data, 4));
}
return unless $message;
my $pkt = {
errno => $errno,
sqlstate => $marker . $sqlstate,