• Kirill Smelkov's avatar
    slapproxy: Teach slapproxy to handle non-ascii instance parameters · 347d33d6
    Kirill Smelkov authored
    1. when forming instance parameters xml dict on client side, we cannot
       use str() to convert parameter_value to string - because it breaks e.g.
       this way:
    
       In [1]: s = u'Привет Мир!'
       In [2]: str(s)
       ---------------------------------------------------------------------------
       UnicodeEncodeError                        Traceback (most recent call
    
       UnicodeEncodeError: 'ascii' codec can't encode characters in position
       0-5: ordinal not in range(128)
    
       Fix is: convert arguments to unicode strings.
    
    2. when decoding xml on server side it was erroneously assumed to be
       always unicode, and this way xml.encode('utf-8') fails if xml is str
       but with non-ascii characters:
    
       In [3]: r = 'hello world'
    
       In [4]: r.encode('utf-8')
       Out[4]: 'hello world'
    
       In [5]: t = s.encode('utf-8')
    
       In [6]: t
       Out[6]: '\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82 \xd0\x9c\xd0\xb8\xd1\x80!'
    
       In [7]: t.encode('utf-8')
       ---------------------------------------------------------------------------
       UnicodeDecodeError                        Traceback (most recent call last)
    
       UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
    
       Fix is: don't assume xml string is unicode and decode it only, if it
               is unicode, and leave as it is if it is just str.
    347d33d6
__init__.py 54.8 KB