[CalendarServer-changes] [14917] CalDAVTester/trunk/src/request.py
source_changes at macosforge.org
source_changes at macosforge.org
Thu Jun 25 14:56:18 PDT 2015
Revision: 14917
http://trac.calendarserver.org//changeset/14917
Author: cdaboo at apple.com
Date: 2015-06-25 14:56:18 -0700 (Thu, 25 Jun 2015)
Log Message:
-----------
Fix digest nonce timeout. Make sure digest OPTIONS request uri is properly quoted.
Modified Paths:
--------------
CalDAVTester/trunk/src/request.py
Modified: CalDAVTester/trunk/src/request.py
===================================================================
--- CalDAVTester/trunk/src/request.py 2015-06-25 21:55:01 UTC (rev 14916)
+++ CalDAVTester/trunk/src/request.py 2015-06-25 21:56:18 UTC (rev 14917)
@@ -27,6 +27,8 @@
import re
import src.xmlDefs
import time
+import urllib
+import urlparse
import uuid
algorithms = {
@@ -228,16 +230,20 @@
def gethttpdigestauth(self, si, wwwauthorize=None):
- # Check the nonce cache to see if we've used this user before
+ # Check the nonce cache to see if we've used this user before, or if the nonce is more than 5 minutes old
user = [self.user, si.user][self.user == ""]
pswd = [self.pswd, si.pswd][self.pswd == ""]
details = None
- if user in self.manager.digestCache:
+ if user in self.manager.digestCache and self.manager.digestCache[user]["max-nonce-time"] < time.time():
details = self.manager.digestCache[user]
else:
+ # Redo digest auth from scratch to get a new nonce etc
http = SmartHTTPConnection(si.host, si.port, si.ssl, si.afunix)
try:
- http.request("OPTIONS", self.getURI(si))
+ puri = list(urlparse.urlparse(self.getURI(si)))
+ puri[2] = urllib.quote(puri[2])
+ quri = urlparse.urlunparse(puri)
+ http.request("OPTIONS", quri)
response = http.getresponse()
@@ -262,6 +268,7 @@
for (k, v) in [p.split('=', 1) for p in parts]:
details[k.strip()] = unq(v.strip())
+ details["max-nonce-time"] = time.time() + 600
self.manager.digestCache[user] = details
break
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20150625/5147d58d/attachment.html>
More information about the calendarserver-changes
mailing list