]> git.kaiwu.me - nginx.git/commit
Merge of r4896: event pipe: fixed handling of buf_to_file data.
authorMaxim Dounin <mdounin@mdounin.ru>
Tue, 13 Nov 2012 11:24:14 +0000 (11:24 +0000)
committerMaxim Dounin <mdounin@mdounin.ru>
Tue, 13 Nov 2012 11:24:14 +0000 (11:24 +0000)
commit13cda62555b28dd1afb927705eeff0c5f66cdbaf
tree2759f5ccd171607a9b8ef3be7d526c62eb66921e
parent1954cf149aa79ba2bb1ce0b7b20422ab2ca6c93a
Merge of r4896: event pipe: fixed handling of buf_to_file data.

Input filter might free a buffer if there is no data in it, and in case
of first buffer (used for cache header and request header, aka p->buf_to_file)
this resulted in cache corruption.  Buffer memory was reused to read upstream
response before headers were written to disk.

Fix is to avoid moving pointers in ngx_event_pipe_add_free_buf() to a buffer
start if we were asked to free a buffer used by p->buf_to_file.

This fixes occasional cache file corruption, usually resulted
in "cache file ... has md5 collision" alerts.

Reported by Anatoli Marinov.
src/event/ngx_event_pipe.c
src/http/ngx_http_upstream.c