12月 032013
 

Varnish3.0.5が公開されました。
今回はBugfixですが
varnishlogの-mオプションで動きが変わったため一瞬戸惑うかもしれません。

修正された項目は以下になります。

varnishd

■ESIのパースに失敗した場合に標準出力にメッセージを出していたのをやめました
(Stop printing to stdout on ESI parse warnings)

デバッグの時の消し忘れっぽいですね。

■syntheticの最初のパートでNULLを指定した場合segfaultで落ちるのを修正しました
(#1287)

vcl_error内でstd.filereadを使ってNULLが帰ってきた場合や存在しないヘッダを指定したときなどに出ると思いますが
普通はしないと思います。

■streamを利用した際にContent-Lengthが重複してクライアントに送信されるのを修正しました
(#1272)

重要なFix

■不正なRequestかつvcl_errorでrestartをしている際にクラッシュする問題を修正しました
(#1367 CVE-2013-4484)

この問題はvcl_error内で不正なリクエストをrestartした際に起こる問題です。(リクエスト内容はチケットを参照下さい)
40xや50xを起きた際にrestartを行い別バックエンドなどへのfailoverを行う場合がありますが
その際に不正なリクエストのものをrestartしてしまうとクラッシュします。
バージョンアップでも解決しますが、すぐに行えない場合は以下で回避が可能です


sub vcl_error{
  if (obj.status == 400 || obj.status == 413) {
    return(deliver);
  }
}

このVCLは必ず先頭に書いてください。(vcl_errorが複数あってもOK)
アクションが複数あっても問題ない理由は「同じVCLアクション(vcl_recvなど)を複数定義する」を参照下さい

■クライアントが接続を閉じた後にserver.ipを利用した際にクラッシュする問題を修正しました
(#1376)

varnishadm

■標準入力で渡されたコマンドを適切に扱えなかったのを修正しました
(#1314)

3.0.4(パイプでの渡しが出来ない)


echo vcl.list|varnishadm
200
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,2.6.32-71.18.1.el6.x86_64,x86_64,-sfile,-smalloc,-hcritbit
varnish-3.0.4 revision 9f83e8f

Type 'help' for command list.
Type 'quit' to close CLI session.

200
active          0 boot

3.0.5(パイプで渡せる)


echo "vcl.list"|varnishadm
200
active          4 boot

一気にpurgeしたいときとか便利ですね。

varnishlog

■-mオプションで絞り込む際に-c若しくは-bを指定しない場合は両方が指定された扱いとなります
(#1071)

3.0.4(-c/-bを指定しなくてもデータが取れる)


varnishlog -m "RxHeader:Host: xcir.net"
...
   12 RxHeader     c Host: xcir.net
...


3.0.5(指定しないと取れない)


varnishlog -m "RxHeader:Host: xcir.net"
^C

varnishlog -m "RxHeader:Host: xcir.net" -c
...
   16 RxHeader     c Accept: */*
   16 RxHeader     c Host: xcir.net
...

今までリクエストヘッダにHost: exmaplnetが含んでいるものを取りたい場合は
varnishlog -m “RxHeader:Host: example.net”
だけでもとれたのですが、
きちんとクライアント<->Varnish(-c)、それともVarnish<->バックエンド(-b)の通信なのかを指定する必要があります。

次は4.0ですね。VUG8でもいろいろ出ていましたが楽しみです
—–
Varnish Cache 3.0.5