The cause of this is a broken back port of the upstream change set:
https://github.com/memcached/memcached/commit/d9cd01ede97f4145af9781d448c62a3318952719
That changeset uses strncmp whereas the .diff file uses strcmp
++ if (ptr - c->rcurr > 100 || ++ strcmp(ptr, "get ") && strcmp(ptr, "gets ")) { ++ conn_set_state(c, conn_closing); ++ return 1; ++ }
Given that the string being compared contains either "get HUGE KEY" or "gets HUGE KEYS" the check in the ubuntu diff will *always* return false.
Simply correcting that back port appears to solve the problem for us.
The cause of this is a broken back port of the upstream change set:
https:/ /github. com/memcached/ memcached/ commit/ d9cd01ede97f414 5af9781d448c62a 3318952719
That changeset uses strncmp whereas the .diff file uses strcmp
++ if (ptr - c->rcurr > 100 ||
++ strcmp(ptr, "get ") && strcmp(ptr, "gets ")) {
++ conn_set_state(c, conn_closing);
++ return 1;
++ }
Given that the string being compared contains either "get HUGE KEY" or "gets HUGE KEYS" the check in the ubuntu diff will *always* return false.
Simply correcting that back port appears to solve the problem for us.