_ [comp] privoxy 3.0.13 vs w3m

privoxy 3.0.13 にしてから、w3m でうまくアクセスできないサイトが出てくるようになった。strace で w3m を追ってみると、どうも読み込みで止まってるっぽい。これはもしかして Keep-Alive 関係?と思って privoxy の changelog を見てみると、

** Version 3.0.13 Beta **

:
  • Added client-side keep-alive support.
ref. /usr/share/doc/privoxy/changelog.gz

やっぱり。古い config と 3.0.13 の config の diff を取ってみると、

keep-alive-timeout 300

というのが増えてる。こいつをコメントアウトしたところ、w3m で詰まることがなくなった。けど、w3m 以外でも使ってるわけだし…。とりあえず Keep-Alive しないように、HTTP リクエストで Connection: close を送ってやるように w3m のほうを変更。これで keep-alive-timeout を生かしたままで w3m が詰まらなくなった。

--- CVS/url.c.orig      2007-05-24 10:30:17.000000000 +0900
+++ CVS/url.c   2009-07-03 12:29:07.000000000 +0900
@@ -1291,6 +1291,8 @@ otherinfo(ParsedURL *target, ParsedURL *
     Strcat_m_charp(s, "Accept-Encoding: ", AcceptEncoding, "\r\n", NULL);
     Strcat_m_charp(s, "Accept-Language: ", AcceptLang, "\r\n", NULL);

+    Strcat_charp(s, "Connection: close\r\n");
+
     if (target->host) {
        Strcat_charp(s, "Host: ");
        Strcat_charp(s, target->host);

けど、w3m は HTTP/1.0 クライアントなので本当は Connection: close というものがあること自体知らない。HTTP/1.0 クライアントであるにも関わらず、HTTP/1.1 のデフォルトである Keep-Alive 動作を行っている privoxy のほうの問題?

_ [debian] privoxy 3.0.13 変

ということで #535545 に送った。