内藤です。

FreeBSD 9.0-Rの環境でproxyを使用している場合、
時々fetch(1)が失敗するので調べていましたところ、
どうもhttpsを指定している時に失敗することが分かりました。

最近、portsのアップデートで下記URLを取得しようとしていたところで
fetchコマンドがエラーになっていました。

fetch 
https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_13_4_RTM/src/nss-3.13.4.tar.gz

よくよく見てみると、どうもhttpsの場合はproxyを使用せずに
直接 ftp.mozilla.org に接続しようとしているようです。

ソース上、確かにsrc/lib/libfetch/http.cのhttp_connect()関数内で
httpsの場合はproxyを使用せずに直接接続しに行くコードになっていました。

とりあえず、手元の環境ではproxyを使用してくれないと困りますので、
ちょっと修正してみました。

添付のpatchを src/lib/libfetch の下で当てると、
httpsの場合でも proxy 経由で接続してくれるようになります。

ただし、Authorizationヘッダに対応していませんため、
認証の必要なproxyサーバは利用できません。

なお、よくよくソースを見てみると、
AuthorizationヘッダをProxyが返してきた場合にはTCPコネクションを切断しているように
思いますため、9.0Rの実装では環境変数HTTP_PROXY_AUTHが効かないように思います。

残念ながら私の手元には認証の必要なProxyサーバがありませんため、
確認ができません。

この話題が既に出ているのか、
Googleで探した限りでは見つからなかったのですが、
不完全なパッチでもsend-prして良いものなのでしょうか?

-- 
内藤 祐一郎
naito.yuich...@gmail.com


Attachment: libfetch.diff
Description: Binary data

メールによる返信