Just stumbled across issue #2487, which tracks some of this same discussion:
http://subversion.tigris.org/issues/show_bug.cgi?id=2487

Is the environment-variable-based workaround included in that issue worth
"productizing"?

C. Michael Pilato wrote:
> CollabNet has a customer who's having trouble with locking files with
> Chinese names.  They are hosting with Apache, and when they attempt to lock
> such a file, the server process hangs and the client sits doing nothing
> until a timeout kicks in and breaks the connection.  (I can easily reproduce
> the situation myself, too.)
> 
> The problem occurs as Subversion attempts to convert all the UTF-8 pre-lock
> hook parameters (which include the to-be-locked path) into the locale's
> character set before using them to invoke the hook script itself.  The
> problem is that even though the system locale is a UTF-8-ish one, Apache has
> set the locale to the baseline "C" locale.  UTF-8 Chinese characters can't
> be represented in mere ASCII, so the conversion fails.  Subversion (on the
> server) creates an error when svn_io_start_cmd() is trying to convert those
> hook parameters, and stores the error in an 'err' local variable in
> run_hook_cmd():
> 
>    err = svn_io_start_cmd(&cmd_proc, ".", cmd, args, FALSE,
>                           stdin_handle, result ? write_outhandle : 
> null_handle,
>                           write_errhandle, pool);
> 
> But this codepath still allows us to fall into this future block of code,
> where we're trying to read output from the hook (which, by the way, was
> never actually launched):
> 
>    if (result)
>       {
>         svn_stringbuf_t *native_stdout;
>         SVN_ERR(svn_stringbuf_from_aprfile(&native_stdout, read_outhandle,
> pool));
> 
> I believe this is the cause of the Apache process hang.  And I suspect that
> we can fix this.
> 
> But what about original problem with encodings?  If I recall correctly,
> Apache is intentionally locale-ignorant.  Like, not just "I don't know about
> the system locale", but "I'd like to ignore the system locale.  On purpose.
>  For reals."  Would an appropriate workaround for this problem be to
> introduce a mod_dav_svn configuration directive which allows admins to
> dictate the locale of their hook environment?
> 


-- 
C. Michael Pilato <cmpil...@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to