from time import time
from traceback import format_exc
from wsgiref.handlers import format_date_time
-from binascii import hexlify
+from binascii import hexlify, unhexlify
from django.conf import settings
from django.http import HttpResponse
raise BadRequest('Bad X-Object-Sharing header value')
else:
raise BadRequest('Bad X-Object-Sharing header value')
+
+ # Keep duplicates only in write list.
+ dups = [x for x in ret.get('read', []) if x in ret.get('write', []) and x != '*']
+ if dups:
+ for x in dups:
+ ret['read'].remove(x)
+ if len(ret['read']) == 0:
+ del(ret['read'])
+
return ret
def get_public(request):
return hexlify(subhash(''))
if len(hashmap) == 1:
return hashmap[0]
+
s = 2
while s < len(hashmap):
s = s * 2
- h = hashmap + ([('\x00' * len(hashmap[0]))] * (s - len(hashmap)))
- h = [subhash(h[x] + (h[x + 1] if x + 1 < len(h) else '')) for x in range(0, len(h), 2)]
+ h = [unhexlify(x) for x in hashmap]
+ h += [('\x00' * len(h[0]))] * (s - len(hashmap))
while len(h) > 1:
- h = [subhash(h[x] + (h[x + 1] if x + 1 < len(h) else '')) for x in range(0, len(h), 2)]
+ h = [subhash(h[x] + h[x + 1]) for x in range(0, len(h), 2)]
return hexlify(h[0])
def update_response_headers(request, response):