[prev in list] [next in list] [prev in thread] [next in thread] 

List:       dav-dev
Subject:    [dav-dev] Does Apache 2.2.4's mod_dav module properly handle errors
From:       Kevin Stearns <kstearns () us ! ibm ! com>
Date:       2007-07-13 17:08:26
Message-ID: OF8CC76A96.F966B3F1-ON85257317.00512D01-85257317.005DE4A1 () us ! ibm ! com
[Download RAW message or body]

Hello, dav developers.

I would like to discuss the behavior of the dav_method_put function in 
Apache 2.2.4's
mod_dav module that I believe is currently incorrect.

Currently,  in the dav_method_put in apache 2.2.4  , if ap_get_brigade 
returns an 
error then the entire file gets deleted by the call to 
resource->hooks->close_stream
before the dav_method_put returns. This is true even if the client 
specifies a the 
content-range field in the PUT request.

It seems to me, for a PUT operation where an entire file is being 
transferred a 
delete would be the proper course of action to undo the transaction. But, 
deleting 
an entire file when a PUT transaction that is attempting to change just a 
portion 
of a previously existing file would be the wrong way to restore the state 
of the 
file to what it was before the PUT was processed.


I don't know if this dav_method_put behavior is by design or is meant for 
conformance to the webdav RFCs. I also do not know if any current webdav 
clients 
depend on this behavior in anyway.

Changing this behavior would allow webdav clients to be developed that can 
transfer
multi-giga bytes files with out needing to re-send the entire file from 
the beginning after
transient network problems.

I think that Apache bug 38148 
http://issues.apache.org/bugzilla/show_bug.cgi?id=38148 
expresses similar problem. But no changes have been made with regards to 
that.



_______________________________________________
dav-dev maillist  -  dav-dev@lyra.org
http://dav.lyra.org/mailman/listinfo/dav-dev
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic