"C. Michael Pilato" <cmpil...@collab.net> writes: > On 04/16/2013 07:40 AM, Philip Martin wrote: >> Perhaps mod_dav_svn should only return a low level error is a very few >> carefully controlled circumstances and shoul usually return the more >> generic "could not begin a transaction" generated inside mod_dav_svn. > > mod_dav_svn has the advantage of two different error output mechanisms, one > for each of its "customers". Perhaps we could log (error_log) the more > precise (machine-path-revealing) error, and transmit the generic error back > to the user?
The dav_error's are chained a bit like svn_error_t's: (gdb) p derr[0] $1 = {status = 500, error_id = 13, desc = 0x7f73eb8fe1ab "could not begin a transaction", save_errno = 0, namespace = 0x0, tagname = 0x0, prev = 0x7f73e36f7290} (gdb) p derr[0].prev[0] $2 = {status = 500, error_id = 13, desc = 0x7f73e36f7228 "Can't create directory '/home/pm/sw/subversion/obj/repo/db/transactions/2-h.txn': Permission denied", save_errno = 0, namespace = 0x7f73eb9032f7 "svn:", tagname = 0x7f73eb9000e7 "error", prev = 0x0} When mod_dav_svn adds a generic error it uses dav_svn_push_error so the generic error doesn't have a tagname. If we were to manually chain a new error created with dav_new_error_tag then we could give it a tagname and it would be returned. This would change a lot of the errors returned to the client and I don't know how useful the generic errors would be. The low-level errors are a useful way for the backend to communicate with the client. -- Certified & Supported Apache Subversion Downloads: http://www.wandisco.com/subversion/download