#を含む文字は鬼門?

untitled.s#1 という名前のファイルを dav_svn 経由で投げ込もうとしてハマる.httpdのエラーメッセージはこんな感じ.

[error] [client 192.168.0.90] buggy client used un-escaped hash in Request-URI

なんじゃらほい.


エラーログをさらに詳細に取ってみる.

[Wed Nov 05 17:50:31 2008] [debug] mod_auth_apple2.c(448): [client ] mod_auth_apple: Cache hit for user monaka uri /secret/SashimiKnife/trunk/untitled.s took 0 ms; result = 'success'
[Wed Nov 05 17:50:31 2008] [debug] mod_auth_apple2.c(492): [client 192.168.0.90] mod_auth_apple: Short name for user hogehoge set to hogehoge
[Wed Nov 05 17:50:31 2008] [info] [client 192.168.0.90] mod_auth_apple: Authenticated user hogehoge uri /secret/SashimiKnife/trunk/untitled.s
[Wed Nov 05 17:50:31 2008] [debug] mod_digest_apple2.c(688): [client 192.168.0.90] mod_digest_apple: Declining non-digest auth_type
[Wed Nov 05 17:50:31 2008] [info] [client 192.168.0.90] mod_auth_apple: Authorized user 'hogehoge' uri '/secret/SashimiKnife/trunk/untitled.s' per group 'webdav'
[Wed Nov 05 17:50:31 2008] [error] [client 192.168.0.90] buggy client used un-escaped hash in Request-URI

ううーむ.確かに # の後ろがブッ飛んでるなぁ….


Lepard 付属の svnsvkが古いからかと思って,TortoiseSVNの最新を落としてきてWindows上でやってみたものの,同様のエラーが出るっぽい.
検索すると,2004年頃に同様の話題がどこかのMLで出ていたらしいが,解決法は出ていない.


もしかして,Leopard Server 付属の dav_svn に問題があるのかしら.
仮にTortoiseSVNと他のバージョンのdav_svnでも再現するとなると,もっと声が挙っていても不思議ではないはずだし.

tcpdumpでおっかけてみた.

しつこく.

        0x0000:  4500 013e 0310 4000 4006 b469 c0a8 005a  E..>..@.@..i...Z
        0x0010:  c0a8 0096 f4e7 0050 5a70 6453 4f3e 1f07  .......PZpdSO>..
        0x0020:  8018 ffff 0ce5 0000 0101 080a 1e62 4d74  .............bMt
        0x0030:  2716 3229 5052 4f50 4649 4e44 202f 7365  '.2)PROPFIND./se
(中略)
        0x0050:  652f 7472 756e 6b2f 756e 7469 746c 6564  e/trunk/untitled
        0x0060:  2e73 2532 3333 2048 5454 502f 312e 310d  .s%233.HTTP/1.1.

うーむ.ちゃんとエスケーブしているように見えるのだが,戻ってくるのは…

	0x0000:  4500 036f ae04 4000 4006 0744 c0a8 0096  E..o..@.@..D....
	0x0010:  c0a8 005a 0050 f506 4fb9 44ed cd50 9438  ...Z.P..O.D..P.8
	0x0020:  8018 ffff d3f6 0000 0101 080a 2716 3db5  ............'.=.
	0x0030:  1e62 58fe 4854 5450 2f31 2e31 2034 3030  .bX.HTTP/1.1.400
	0x0040:  2042 6164 2052 6571 7565 7374 0d0a 4461  .Bad.Request..Da
	0x0050:  7465 3a20 5765 642c 2030 3520 4e6f 7620  te:.Wed,.05.Nov.

こいつだ.

こりゃ Leopard Server付属の dav_svn が悪いという気がしてきた.