From 5cbb2a55fedcbcedcb7b5197960998f18e53fa5e Mon Sep 17 00:00:00 2001
From: Kazuhiko Shiozaki <kazuhiko@nexedi.com>
Date: Wed, 17 Jun 2009 13:28:52 +0000
Subject: [PATCH] * patch memcache.check_key not Client.check_key * skip key
 length check in check_key() because we have no information about key length
 in memcache class level.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@27634 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Type/patches/memcache_client.py | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/product/ERP5Type/patches/memcache_client.py b/product/ERP5Type/patches/memcache_client.py
index 859dec866a..80621bd93f 100644
--- a/product/ERP5Type/patches/memcache_client.py
+++ b/product/ERP5Type/patches/memcache_client.py
@@ -1,5 +1,6 @@
 # -*- coding: utf-8 -*-
 #Code based on python-memcached-1.44
+import types
 try:
   import cPickle as pickle
 except ImportError:
@@ -66,7 +67,7 @@ if memcache is not None:
     except TypeError:
         self.picklerIsKeyword = False
 
-  def Client_check_key(key, key_extra_len=0):
+  def memcache_check_key(key, key_extra_len=0):
     """Checks sanity of key.  Fails if:
         Key length is > SERVER_MAX_KEY_LENGTH (Raises MemcachedKeyLength).
         Contains control characters  (Raises MemcachedKeyCharacterError).
@@ -86,10 +87,12 @@ if memcache is not None:
       raise Client.MemcachedKeyTypeError, ("Key must be str()'s")
 
     if isinstance(key, basestring):
-      if self.server_max_key_length != 0 and len(key) + key_extra_len > self.server_max_key_length:
-         raise Client.MemcachedKeyLengthError, ("Key length is > %s"
-                   % self.server_max_key_length)
       for char in key:
+        #Patch: skip key length check because we have no information
+        #about key length in memcache class level.
+        if 0 and len(key) + key_extra_len > SERVER_MAX_KEY_LENGTH:
+             raise Client.MemcachedKeyLengthError, ("Key length is > %s"
+                     % SERVER_MAX_KEY_LENGTH)
         if ord(char) < 32 or ord(char) == 127:
             raise Client.MemcachedKeyCharacterError, "Control characters not allowed"
 
@@ -141,6 +144,6 @@ if memcache is not None:
     return (flags, len(val), val)
 
   Client.__init__ = Client__init__
-  Client.check_key = Client_check_key
   Client._val_to_store_info = Client__val_to_store_info
-  memcache.Client = Client
\ No newline at end of file
+  memcache.check_key = memcache_check_key
+  del Client__init__, Client__val_to_store_info, memcache_check_key
-- 
2.30.9