 +        log.err("request=%s\n" % (request,))
 +        log.err("source=%s\n" % (source,))
 +        log.err("source_uri=%s\n" % (source_uri,))
++        log.err("data=%s\n" % (data,))
 +        log.err("destination=%s\n" % (destination,))
 +        log.err("destination_uri=%s\n" % (destination_uri,))
 +        log.err("deletesource=%s\n" % (deletesource,))

===================================================================
--- twisted/web2/dav/method/put_common.py	(revision 0)
+++ twisted/web2/dav/method/put_common.py	(revision 0)
@@ -0,0 +1,259 @@
+##
+# Copyright (c) 2005-2006 Apple Computer, Inc. All rights reserved.
+#

+        if source is not None:
+            response = maybeDeferred(copy, source.fp, destination.fp, destination_uri, depth)
+        else:
+            datastream = request.stream
+            if data is not None:
+                datastream = MemoryStream(data)
+            md5 = MD5StreamWrapper(datastream)
+            response = maybeDeferred(put, md5, destination.fp)
+
+        response = waitForDeferred(response)
