[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

cache と redirect の憂鬱



実は,つい1週間ほど前に気が付いたのですが,現在の emacs-w3m の cache 
周りには,cache を同定するためのキーの一貫性が取れていないと言う深刻な
問題が隠れています.

現在の cache は,w3m-w3m-retrieve() / w3m-w3m-attributes() が呼び出さ
れたときに指定されていた URL をキーとして保存されています.そのため,

    http://emacs-w3m.namazu.org

というような URL を指定すると,この URL をキーとして cache を保管しま
す.しかし実際には,

    http://emacs-w3m.namazu.org/

と / を付加された URL にアクセスしていて,w3m-current-url には,こちら
の値が代入されます.

この状態で w3m-copy-buffer() を呼び出すと,実際の URL である
http://emacs-w3m.namazu.org/ をキーとして cache を検索しますが,見つか
らずに非同期プロセスが呼び出されることになります.

また,http://emacs-w3m.namazu.org/ml などを指定すると,これはサーバー
側の機能で redirect されて http://emacs-w3m.namazu.org/ml/ に誘導され
ますから,同様の問題が発生します.

昨日の

    (w3m-copy-buffer): Wrap `w3m-goto-url' with
    `w3m-process-with-wait-handler', to avoid unexpected asynchronous
    processes.

という修正の裏側には,こういう観察があったわけです.

でもって,この問題をきちんと修正するためには,cache を実際の URL をキー
として保管するように改良する必要があるのですが,実際の URL が確定する
時点と言うものについて,もう少し観察しないといけないようです.

-- 
土屋 雅稔 ( TSUCHIYA Masatoshi )