diff --git a/internal/elements.go b/internal/elements.go index f380573..0e13ba3 100644 --- a/internal/elements.go +++ b/internal/elements.go @@ -1,6 +1,7 @@ package internal import ( + "encoding/base64" "encoding/xml" "errors" "fmt" @@ -353,7 +354,7 @@ type Time time.Time func (t *Time) UnmarshalText(b []byte) error { tt, err := http.ParseTime(string(b)) if err != nil { - return err + return errors.New(err.Error() + " : time_data : " + base64.StdEncoding.EncodeToString(b)) } *t = Time(tt) return nil diff --git a/internal/server.go b/internal/server.go index f9d1f7a..2fe2e50 100644 --- a/internal/server.go +++ b/internal/server.go @@ -187,9 +187,8 @@ func NewPropFindResponse(path string, propfind *PropFind, props map[xml.Name]Pro code := http.StatusOK if err != nil { - // TODO: don't throw away error message here code = HTTPErrorFromError(err).Code - val = emptyVal + val = NewRawXMLElement(xmlName, []xml.Attr{{Name: xml.Name{Space: "ERR", Local: "Error"}, Value: err.Error()}}, nil) } if err := resp.EncodeProp(code, val); err != nil { @@ -210,8 +209,8 @@ func NewPropFindResponse(path string, propfind *PropFind, props map[xml.Name]Pro f, ok := props[xmlName] if ok { if v, err := f(&raw); err != nil { - // TODO: don't throw away error message here code = HTTPErrorFromError(err).Code + val = NewRawXMLElement(xmlName, []xml.Attr{{Name: xml.Name{Space: "ERR", Local: "Error"}, Value: err.Error()}}, nil) } else { code = http.StatusOK val = v