summaryrefslogtreecommitdiff
path: root/sql/net_serv.cc
diff options
context:
space:
mode:
authorMichael Widenius <monty@askmonty.org>2010-11-23 23:39:59 +0200
committerMichael Widenius <monty@askmonty.org>2010-11-23 23:39:59 +0200
commitb52020221e8b4e58d1bc6dd5a5a6f065a6a3a083 (patch)
tree6068b9d90b4127b1c3608e29913fa82bf1a1f20e /sql/net_serv.cc
parent7840965db9460e2117c163f3db83aaa247c65203 (diff)
parent498ee6bd19eabc85dcbd9abebc9cf6aeb79d1985 (diff)
downloadmariadb-git-b52020221e8b4e58d1bc6dd5a5a6f065a6a3a083.tar.gz
Merge with MySQL 5.1.52
Diffstat (limited to 'sql/net_serv.cc')
-rw-r--r--sql/net_serv.cc12
1 files changed, 11 insertions, 1 deletions
diff --git a/sql/net_serv.cc b/sql/net_serv.cc
index 4796a5601bf..ff426a4a608 100644
--- a/sql/net_serv.cc
+++ b/sql/net_serv.cc
@@ -168,7 +168,17 @@ my_bool net_realloc(NET *net, size_t length)
DBUG_ENTER("net_realloc");
DBUG_PRINT("enter",("length: %lu", (ulong) length));
- if (length >= net->max_packet_size)
+ /*
+ When compression is off, net->where_b is always 0.
+ With compression turned on, net->where_b may indicate
+ that we still have a piece of the previous logical
+ packet in the buffer, unprocessed. Take it into account
+ when checking that max_allowed_packet is not exceeded.
+ This ensures that the client treats max_allowed_packet
+ limit identically, regardless of compression being on
+ or off.
+ */
+ if (length >= (net->max_packet_size + net->where_b))
{
DBUG_PRINT("error", ("Packet too large. Max size: %lu",
net->max_packet_size));