えむけいさん、
サーバ/プロクシ間の data connection が切れていない(サーバ側から切っていない)ため、プロクシ/クライアント間の切断がおこなわれていないように思えます。
サーバからの 226 Transfer complete を待ってプロクシ側から切るようにしてみます。
って化け化けでした。すみません。もう一度。
<<< s=1500: Tue Mar 28 23:51:29 2000 <<<
GET ftp://localhost/foo/ HTTP/1.0
Referer: ftp://localhost/
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.7 [ja] (WinNT; I)
Host: localhost
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
Accept-Encoding: gzip
Accept-Language: ja,en
Accept-Charset: Shift_JIS,*,utf-8
<<<Tue Mar 28 23:51:29 2000 <<< 220 pcg-803 Microsoft FTP Service (Version 5.0).
>>>Tue Mar 28 23:51:29 2000 >>> USER anonymous
<<<Tue Mar 28 23:51:29 2000 <<< 331 Anonymous access allowed, send identity (e-mail name) as password.
>>>Tue Mar 28 23:51:29 2000 >>> PASS www-proxy@pcg-803
<<<Tue Mar 28 23:51:29 2000 <<< 230 Anonymous user logged in.
>>>Tue Mar 28 23:51:29 2000 >>> SYST
<<<Tue Mar 28 23:51:29 2000 <<< 215 Windows_NT version 5.0
>>>Tue Mar 28 23:51:29 2000 >>> TYPE A
<<<Tue Mar 28 23:51:29 2000 <<< 200 Type set to A.
>>>Tue Mar 28 23:51:29 2000 >>> TYPE A
<<<Tue Mar 28 23:51:29 2000 <<< 200 Type set to A.
>>>Tue Mar 28 23:51:29 2000 >>> CWD foo
<<<Tue Mar 28 23:51:29 2000 <<< 250 CWD command successful.
>>>Tue Mar 28 23:51:29 2000 >>> HTTP/1.0 200 OK
Date: Tue, 28 Mar 2000 14:51:29 GMT
Content-Type: text/html
>>>Tue Mar 28 23:51:29 2000 >>> <TITLE>Directory of "/foo"</TITLE>
>>>Tue Mar 28 23:51:29 2000 >>> <H2>Current Directory is "/foo"</H2><P><PRE>
>>>Tue Mar 28 23:51:29 2000 >>> <HR>
>>>Tue Mar 28 23:51:29 2000 >>> <HR>
>>>Tue Mar 28 23:51:29 2000 >>> PORT 127,0,0,1,11,99
<<<Tue Mar 28 23:51:29 2000 <<< 200 PORT command successful.
>>>Tue Mar 28 23:51:29 2000 >>> LIST
<<<Tue Mar 28 23:51:29 2000 <<< 150 Opening ASCII mode data connection for /bin/ls.
226 Transfer complete.
>>>Tue Mar 28 23:51:29 2000 >>> <A HREF="../">../ Up to parent directory</A><P>
>Content-Length の話だとサーバ側のソケットが開きっぱなしのような気もしますが、ちょっとはっきりしないので、trace.log を示してもらえませんか?
こんなのです。
<<< s=1500: Tue Mar 28 23:51:29 2000 <<<
GET ftp://localhost/foo/ HTTP/1.0
Referer: ftp://localhost/
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.7 [ja] (WinNT; I)
Host: localhost
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
Accept-Encoding: gzip
Accept-Language: ja,en
Accept-Charset: Shift_JIS,*,utf-8
<<<Tue Mar 28 23:51:29 2000 <<< 220 pcg-803 Microsoft FTP Service (Version 5.0).
>>>Tue Mar 28 23:51:29 2000 >>> USER anonymous
<<<Tue Mar 28 23:51:29 2000 <<< 331 Anonymous access allowed, send identity (e-mail name) as password.
>>>Tue Mar 28 23:51:29 2000 >>> PASS www-proxy@pcg-803
<<<Tue Mar 28 23:51:29 2000 <<< 230 Anonymous user logged in.
>>>Tue Mar 28 23:51:29 2000 >>> SYST
<<<Tue Mar 28 23:51:29 2000 <<< 215 Windows_NT version 5.0
>>>Tue Mar 28 23:51:29 2000 >>> TYPE A
<<<Tue Mar 28 23:51:29 2000 <<< 200 Type set to A.
>>>Tue Mar 28 23:51:29 2000 >>> TYPE A
<<<Tue Mar 28 23:51:29 2000 <<< 200 Type set to A.
>>>Tue Mar 28 23:51:29 2000 >>> CWD foo
<<<Tue Mar 28 23:51:29 2000 <<< 250 CWD command successful.
>>>Tue Mar 28 23:51:29 2000 >>> HTTP/1.0 200 OK
Date: Tue, 28 Mar 2000 14:51:29 GMT
Content-Type: text/html
>>>Tue Mar 28 23:51:29 2000 >>> <TITLE>Directory of "/foo"</TITLE>
>>>Tue Mar 28 23:51:29 2000 >>> <H2>Current Directory is "/foo"</H2><P>
>>>Tue Mar 28 23:51:29 2000 >>>
>>>Tue Mar 28 23:51:29 2000 >>>
>>>Tue Mar 28 23:51:29 2000 >>> PORT 127,0,0,1,11,99
<<<Tue Mar 28 23:51:29 2000 <<< 200 PORT command successful.
>>>Tue Mar 28 23:51:29 2000 >>> LIST
<<<Tue Mar 28 23:51:29 2000 <<< 150 Opening ASCII mode data connection for /bin/ls.
226 Transfer complete.
>>>Tue Mar 28 23:51:29 2000 >>> <A HREF="../">../ Up to parent directory</A><P>
えむけいさん、
Content-Length の話だとサーバ側のソケットが開きっぱなしのような気もしますが、ちょっとはっきりしないので、trace.log を示してもらえませんか?
>HTTP/1.1 とか Proxy-Connection: Keep-Alive の問題ではないのですよね?
たしかにProxy-Connection: Keep-Aliveです。
でもNetscapeはコネクションが切れる前に他のディレクトリに移動しようとすると「転送が中断されました!」と表示します。Content-Lengthが返されないのでどこまでが1番目のリクエストの終わりなのか判断不可能なためだと思います。
Content-Lengthを必ず返すか、返せないならコネクションを切ってしまうかのどちらかが必要だと思います。
えむけいさん、
ftp の方は不思議ですね。ブラウザ-プロクシ間が切断されないというとファイルダウンロードのダイアログが消えない、ということでしょうか?
HTTP/1.1 とか Proxy-Connection: Keep-Alive の問題ではないのですよね?
ftp関連の修正ご苦労様です。
ただ、ローカルのIISに接続したときブラウザ-プロキシ間が切断されない問題は相変わらず発生します。インターネット上のサーバに繋ぐときは問題ないのでこちらの環境の問題かもしれませんが…。
えむけいさん、
ftpプロキシの件、そうですか、そうするとクライアント側のソケットをクローズしていないわけですね。調べて直します。
>1. は ソケットのクローズだけで"QUIT" を送っていない、
わかりにくい書き方で恐縮でしたが切断されなくて困ったのはプロキシ-サーバ間ではなくてクライアント-プロキシ間です。
プロキシ-サーバ間はむしろ同じセッションを使いまわすようにしたほうがパフォーマンス的に望ましいのではないでしょうか。
えむけいさん、
ftpプロキシの件、調べて直します。
1. は ソケットのクローズだけで"QUIT" を送っていない、 2. は単純なミスのようです。
ftpプロキシで以下の2点の現象が発生します。
1. localhost上にあるWindows2000付属のIISのftpサーバにプロキシ経由で接続してみたところ、取得が完了した後も、いつまでたっても接続が切断されません。
2. ディレクトリの一覧を取得したとき先頭に表示される、「Current Directory is "/fo"」の部分のディレクトリ名の末尾が1文字欠けています。