summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <monty@mashka.mysql.fi>2003-01-02 16:26:26 +0200
committerunknown <monty@mashka.mysql.fi>2003-01-02 16:26:26 +0200
commit5fcd61bec6600a83e9ed9fba2ba380b8f5a66a35 (patch)
treed5f028634bcbaae2571568955a56ea1b2b5c266b
parent58d02995bb5776ff0264e91281b6e23c98f2791f (diff)
parente4b0ba04437779b660b25956153902d81a4d56e9 (diff)
downloadmariadb-git-5fcd61bec6600a83e9ed9fba2ba380b8f5a66a35.tar.gz
Merge work:/my/mysql-4.0 into mashka.mysql.fi:/home/my/mysql-4.0
sql/net_serv.cc: Auto merged sql/sql_parse.cc: Auto merged
-rw-r--r--sql/net_serv.cc21
-rw-r--r--sql/sql_parse.cc6
2 files changed, 24 insertions, 3 deletions
diff --git a/sql/net_serv.cc b/sql/net_serv.cc
index 0d4cf9b9444..49454c9df2c 100644
--- a/sql/net_serv.cc
+++ b/sql/net_serv.cc
@@ -479,6 +479,7 @@ static void my_net_skip_rest(NET *net, uint32 remain, thr_alarm_t *alarmed)
ALARM alarm_buff;
uint retry_count=0;
my_bool old_mode;
+ uint32 old=remain;
if (!thr_alarm_in_use(&alarmed))
{
@@ -500,6 +501,12 @@ static void my_net_skip_rest(NET *net, uint32 remain, thr_alarm_t *alarmed)
return;
}
remain -= (uint32) length;
+ if (!remain && old==MAX_THREE_BYTES &&
+ (length=vio_read(net->vio,(char*) net->buff,NET_HEADER_SIZE)))
+ {
+ old=remain= uint3korr(net->buff);
+ net->pkt_nr++;
+ }
statistic_add(bytes_received,length,&LOCK_bytes_received);
}
}
@@ -660,11 +667,19 @@ my_real_read(NET *net, ulong *complen)
{
if (net_realloc(net,helping))
{
+#ifdef MYSQL_SERVER
#ifndef NO_ALARM
- if (i == 1)
- my_net_skip_rest(net, (uint32) len, &alarmed);
+ if (net->compress)
+ {
+ len= packet_error;
+ goto end;
+ }
+ my_net_skip_rest(net, (uint32) len, &alarmed);
+ len=0;
+#endif
+#else
+ len= packet_error; /* Return error */
#endif
- len= packet_error; /* Return error */
goto end;
}
}
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 7caf75b6639..0f072a73ac6 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -886,6 +886,12 @@ bool do_command(THD *thd)
vio_description(net->vio) ));
return TRUE;
}
+ else if (!packet_length)
+ {
+ send_error(net,net->last_errno,NullS);
+ net->error=0;
+ DBUG_RETURN(FALSE);
+ }
else
{
packet=(char*) net->read_pos;