Tracのリダイレクトにバグ?

本日、職場にて、 trac をhttpsで動かしてる方がおられたのですが、 なぜかリダイレクトするとhttpになってしまうとの事。

で、ちょくちょく一緒に調べてみると、 どうやら他にもハマってる人がいるらしく、色々と情報が出て来た。 その中の情報で、 trac/web/api.py にいるRequestクラスの持つredirectを書き換えて治ったよ。 ってのを発見。コイツがリダイレクトを一手に担ってるらしい。

trac-0.10.4 だとこうなってる。327行目あたりを抜粋。

self.send_response(status)
if not url.startswith('http://') and not url.startswith('https://'):
    # Make sure the URL is absolute
    url = urlparse.urlunparse((self.scheme,
                               urlparse.urlparse(self.base_url)[1],
                               url, None, None, None))

多分、ココの self.base_url って中に trac.ini で定義してる base_url が入ってるんだろうけど、 すでにプロトコルの部分を無視してるっぽい。

で、 trunk のソースを一応確認してみると、 こんな感じになってる。 277行目 あたりを抜粋。

self.send_response(status)
if not url.startswith('http://') and not url.startswith('https://'):
    # Make sure the URL is absolute, honor base_url for
    # scheme and host if present
    scheme, host = urlparse.urlparse(self.base_url)[:2]
    url = urlparse.urlunparse((scheme, host, url, None, None, None))

self.base_url からプロトコル部分も取ってくるように変更されてる。なるほど。

無理を承知で書き換えをお願いしたところ、見事に意図した通りに動いたよ。 self.scheme ってのがどこから来てるかは分からないままだけど、 どこかでhttpに固定されちゃってるんだろうなぁ。と推測。

trac-0.11 のリリースが遅れに遅れまくって、 あげくの果てには trac-0.10.5 が表に出て来ちゃってるけど、 早く最新版がリリースされないかなぁ?と思う今日この頃であります。

Posted at: 
2007/10/16 23:15:09
0 Comments
0 TrackBacks
Tags: 
Python
Trac
Trackback: 
http://humming.via-kitchen.com/2007/10/16/bug-on-trac-redirect/trackback/

TrackBacks

まだ登録されていません。

Comments

まだ登録されていません。

Add Comment

Add Comment