From a0e586130270b466fa77a34a45b3f0cd69feca8e Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 4 Jan 2011 14:50:49 +0100 Subject: [PATCH] [REVERT] undo the stick-table string key lookup fixes Revert commits 035da6d1b0c436b85add48bc22120aa814c9cab9 and f18b5f21bafef909901b7b5cf95625a63e609c75. These fixes were wrong. They worked but they were fixing the symptom instead of the root cause of the problem. The real issue was in the ebtree lookup code and it has been fixed now so these patches are not needed anymore. It's better not to copy memory blocks when we don't need to, so let's revert them. --- src/stick_table.c | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/src/stick_table.c b/src/stick_table.c index f080095b1..7c9ad8da0 100644 --- a/src/stick_table.c +++ b/src/stick_table.c @@ -560,25 +560,7 @@ struct stktable_key *stktable_fetch_key(struct stktable *t, struct proxy *px, st if (!static_table_key.key) return NULL; - if (t->type == STKTABLE_TYPE_STRING) { - /* The string MUST be terminated by a '\0' after the key_len bytes. The problem - * is that we cannot modify the input data if it comes from the original buffer, - * so we copy it to a private buffer if required. - */ - if (static_table_key.key_len > t->key_size - 1) - static_table_key.key_len = t->key_size - 1; - - if (((char *)static_table_key.key)[static_table_key.key_len] != 0) { - if ((char *)static_table_key.key < (char *)&static_table_key.data || - (char *)static_table_key.key > (char *)&static_table_key.data + sizeof(static_table_key.data)) { - /* key definitly not part of the static_table_key private data buffer */ - memcpy(static_table_key.data.buf, static_table_key.key, static_table_key.key_len); - static_table_key.key = static_table_key.data.buf; - } - ((char *)static_table_key.key)[static_table_key.key_len] = 0; - } - } - else if (static_table_key.key_len < t->key_size) { + if ((static_table_key.key_len < t->key_size) && (t->type != STKTABLE_TYPE_STRING)) { /* need padding with null */ /* assume static_table_key.key_len is less than sizeof(static_table_key.data.buf)