Mac版MonoDevelopとプロキシ その2
Mac版MonoDevelopの自動更新を有効にしたかったのでこの方法でプロキシを経由できるようにしていた。
しかし最近になってMonoTouch製アプリをiOSシミュレータ内で動かしているとき、プロキシをバイパスできていないことが判った。
正確にはMonoTouch製Appの中でHttpWebRequestをインスタンス化した時、ProxyプロパティのBypassListが無いHttpWebRequestが生成されていた。
そのためローカルエリアへのアクセスであっても全てプロキシを経由*1しようとしていた。
Monoのソースコードを追って、HttpWebRequest生成時に環境変数no_proxyを読み取っていることが判ったので/etc/launchd.confを以下のように変更してみた。
setenv HTTP_PROXY http://10.0.0.1:8080 setenv NO_PROXY 10.*,testserver
しかしこれだとHttpWebRequestが正常に動いてくれなかった。そればかりかMonoDevelopの自動更新も動かなくなってしまった。NO_PROXY変数の記述が間違っているのかと色々試行錯誤したがうまくいくことは無かった。
結局バイパス方式はあきらめて自動更新したいときだけシェルからMonoDevelopを起動するようにした。
1. /etc/launchd.confからプロキシの記述を削除後Macを再起動。
2. ~/.bashrcファイルに以下を記述
export HTTP_PROXY=http://10.0.0.1:8080
3. 自動更新したいときだけシェルから以下のコマンドでMonoDevelopを起動
open /Applications/MonoDevelop.app
*1:残念ながらプロキシ側がローカルエリアへのアクセスをバイパスしてくれるように設定されることはない