diff options
author | unknown <Sinisa@sinisa.nasamreza.org> | 2003-01-02 16:21:22 +0200 |
---|---|---|
committer | unknown <Sinisa@sinisa.nasamreza.org> | 2003-01-02 16:21:22 +0200 |
commit | 41dc1eaa4f79e0398d652ad4c89638acb4655d80 (patch) | |
tree | 3ab33014787d3e97333093a0ab6a2f896cc23f5d /sql/net_serv.cc | |
parent | 8753e655d93f7616220132f13b8ea426e4f4cea7 (diff) | |
download | mariadb-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.cc | 21 |
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; } } |