summaryrefslogtreecommitdiff
path: root/sql/net_serv.cc
diff options
context:
space:
mode:
authorunknown <Sinisa@sinisa.nasamreza.org>2003-01-02 16:21:22 +0200
committerunknown <Sinisa@sinisa.nasamreza.org>2003-01-02 16:21:22 +0200
commit41dc1eaa4f79e0398d652ad4c89638acb4655d80 (patch)
tree3ab33014787d3e97333093a0ab6a2f896cc23f5d /sql/net_serv.cc
parent8753e655d93f7616220132f13b8ea426e4f4cea7 (diff)
downloadmariadb-git-41dc1eaa4f79e0398d652ad4c89638acb4655d80.tar.gz
Fixing some bugs in client - server protocol and adding a feature
that connection does not close in the case when client sends a buffer larger then max_allowed_packet.
Diffstat (limited to 'sql/net_serv.cc')
-rw-r--r--sql/net_serv.cc21
1 files changed, 18 insertions, 3 deletions
diff --git a/sql/net_serv.cc b/sql/net_serv.cc
index 122793b07a7..d01b28863b9 100644
--- a/sql/net_serv.cc
+++ b/sql/net_serv.cc
@@ -469,6 +469,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))
{
@@ -490,6 +491,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);
}
}
@@ -647,11 +654,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;
}
}