webdav: have copyFiles copy dead properties.

Change-Id: I778e26c06f153fb705b450052d3721fec9a3082b
Reviewed-on: https://go-review.googlesource.com/10471
Reviewed-by: Robert Stepanek <robert.stepanek@gmail.com>
Reviewed-by: Nigel Tao <nigeltao@golang.org>
diff --git a/webdav/file.go b/webdav/file.go
index 31b1e9d..6e3563e 100644
--- a/webdav/file.go
+++ b/webdav/file.go
@@ -702,10 +702,24 @@
 
 		}
 		_, copyErr := io.Copy(dstFile, srcFile)
+		var propsErr error
+		if s, ok := srcFile.(DeadPropsHolder); ok {
+			if d, ok := dstFile.(DeadPropsHolder); ok {
+				m := s.DeadProps()
+				props := make([]Property, 0, len(m))
+				for _, prop := range m {
+					props = append(props, prop)
+				}
+				_, propsErr = d.Patch([]Proppatch{{Props: props}})
+			}
+		}
 		closeErr := dstFile.Close()
 		if copyErr != nil {
 			return http.StatusInternalServerError, copyErr
 		}
+		if propsErr != nil {
+			return http.StatusInternalServerError, propsErr
+		}
 		if closeErr != nil {
 			return http.StatusInternalServerError, closeErr
 		}