Commit fb1e3435 authored by Claude Paroz's avatar Claude Paroz
Browse files

Fixed #21996 -- Used proper encoding for GeoIP content

Thanks Florent Messa for the report.
parent c3dd38c5
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ class GeoIPRecord(Structure):
                ('continent_code', c_char_p),
                ]
geoip_char_fields = [name for name, ctype in GeoIPRecord._fields_ if ctype is c_char_p]
GEOIP_DEFAULT_ENCODING = 'iso-8859-1'
geoip_encodings = {
    0: 'iso-8859-1',
    1: 'utf8',
@@ -100,7 +101,7 @@ def check_string(result, func, cargs):
        free(result)
    else:
        s = ''
    return s.decode()
    return s.decode(GEOIP_DEFAULT_ENCODING)

GeoIP_database_info = lgeoip.GeoIP_database_info
GeoIP_database_info.restype = geoip_char_p
@@ -111,7 +112,7 @@ GeoIP_database_info.errcheck = check_string
def string_output(func):
    def _err_check(result, func, cargs):
        if result:
            return result.decode()
            return result.decode(GEOIP_DEFAULT_ENCODING)
        return result
    func.restype = c_char_p
    func.errcheck = _err_check
+2 −0
Original line number Diff line number Diff line
@@ -119,3 +119,5 @@ class GeoIPTest(unittest.TestCase):
        g = GeoIP()
        d = g.city("www.osnabrueck.de")
        self.assertEqual('Osnabrück', d['city'])
        d = g.country('200.7.49.81')
        self.assertEqual('Curaçao', d['country_name'])
+3 −1
Original line number Diff line number Diff line
@@ -7,4 +7,6 @@ Django 1.6.3 release notes
This is Django 1.6.3, a bugfix release for Django 1.6. Django 1.6.3 fixes
several bugs in 1.6.2:

* ...
* Content retrieved from the GeoIP library is now properly decoded from its
  default ``iso-8859-1`` encoding
  (`#21996 <http://code.djangoproject.com/ticket/21996>`_).