Added control for attrs_json object item's type (#3126)

item can be bytes or str in different situations. So let's keep defensive.
master
Zekeriya Akgül 2019-11-09 12:01:43 +03:00 committed by André Peters
parent 51d1fdcd3d
commit 9ccbeb7f66
1 changed files with 7 additions and 1 deletions

View File

@ -110,7 +110,13 @@ for record in records:
print('Could not determine last notification for %s, assuming never' % (record['rcpt'])) print('Could not determine last notification for %s, assuming never' % (record['rcpt']))
last_notification = 0 last_notification = 0
attrs_json = query_mysql('SELECT attributes FROM mailbox WHERE username = "%s"' % (record['rcpt'])) attrs_json = query_mysql('SELECT attributes FROM mailbox WHERE username = "%s"' % (record['rcpt']))
attrs = json.loads(str(attrs_json[0]['attributes'])) attrs = attrs_json[0]['attributes']
if isinstance(attrs, str):
# if attr is str then just load it
attrs = json.loads(attrs)
else:
# if it's bytes then decode and load it
attrs = json.loads(attrs.decode('utf-8'))
if attrs['quarantine_notification'] not in ('hourly', 'daily', 'weekly', 'never'): if attrs['quarantine_notification'] not in ('hourly', 'daily', 'weekly', 'never'):
print('Abnormal quarantine_notification value') print('Abnormal quarantine_notification value')
continue continue