aboutsummaryrefslogtreecommitdiff
path: root/src/http/modules
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2006-02-16 15:26:46 +0000
committerIgor Sysoev <igor@sysoev.ru>2006-02-16 15:26:46 +0000
commitc2807ecf4522cbd23c18fe87e3d4c0f793026e7a (patch)
treed6c4d64689d7ec8dd8315988360e6c5b62b3c210 /src/http/modules
parentc07b968bebe0801836ee94753b28a7d227ff76cc (diff)
downloadnginx-release-0.3.28.tar.gz
nginx-release-0.3.28.zip
nginx-0.3.28-RELEASE importrelease-0.3.28
*) Feature: the "restrict_host_names" directive was canceled. *) Feature: the --with-cpu-opt=ppc64 configuration parameter. *) Bugfix: on some condition the proxied connection with a client was terminated prematurely. Thanks to Vladimir Shutoff. *) Bugfix: the "X-Accel-Limit-Rate" header line was not taken into account if the request was redirected using the "X-Accel-Redirect" header line. *) Bugfix: the "post_action" directive ran only after a successful completion of a request. *) Bugfix: the proxied response body generated by the "post_action" directive was transferred to a client.
Diffstat (limited to 'src/http/modules')
-rw-r--r--src/http/modules/ngx_http_empty_gif_module.c2
-rw-r--r--src/http/modules/ngx_http_referer_module.c1
-rw-r--r--src/http/modules/perl/nginx.xs34
3 files changed, 25 insertions, 12 deletions
diff --git a/src/http/modules/ngx_http_empty_gif_module.c b/src/http/modules/ngx_http_empty_gif_module.c
index c7af1214c..d72983ad4 100644
--- a/src/http/modules/ngx_http_empty_gif_module.c
+++ b/src/http/modules/ngx_http_empty_gif_module.c
@@ -148,7 +148,7 @@ ngx_http_empty_gif_handler(ngx_http_request_t *r)
b->last_buf = 1;
r->headers_out.status = NGX_HTTP_OK;
- r->headers_out.content_length_n = b->last - b->pos;
+ r->headers_out.content_length_n = sizeof(ngx_empty_gif);
r->headers_out.last_modified_time = 23349600;
rc = ngx_http_send_header(r);
diff --git a/src/http/modules/ngx_http_referer_module.c b/src/http/modules/ngx_http_referer_module.c
index 4eac263a9..3ad419b39 100644
--- a/src/http/modules/ngx_http_referer_module.c
+++ b/src/http/modules/ngx_http_referer_module.c
@@ -334,6 +334,7 @@ ngx_http_valid_referers(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
}
uri.len = 0;
+ uri.data = NULL;
if (ngx_strcmp(value[i].data, "server_names") == 0) {
diff --git a/src/http/modules/perl/nginx.xs b/src/http/modules/perl/nginx.xs
index c24788c70..2d7ede031 100644
--- a/src/http/modules/perl/nginx.xs
+++ b/src/http/modules/perl/nginx.xs
@@ -415,9 +415,11 @@ print(r, ...)
int
-sendfile(r, filename)
+sendfile(r, filename, offset = -1, bytes = 0)
nginx r
char *filename
+ int offset;
+ size_t bytes;
PREINIT:
@@ -460,17 +462,26 @@ sendfile(r, filename)
goto done;
}
- if (ngx_fd_info(fd, &fi) == NGX_FILE_ERROR) {
- ngx_log_error(NGX_LOG_CRIT, r->connection->log, ngx_errno,
- ngx_fd_info_n " \"%s\" failed", filename);
+ if (offset == -1) {
+ offset = 0;
+ }
+
+ if (bytes == 0) {
+ if (ngx_fd_info(fd, &fi) == NGX_FILE_ERROR) {
+ ngx_log_error(NGX_LOG_CRIT, r->connection->log, ngx_errno,
+ ngx_fd_info_n " \"%s\" failed", filename);
+
+ if (ngx_close_file(fd) == NGX_FILE_ERROR) {
+ ngx_log_error(NGX_LOG_ALERT, r->connection->log, ngx_errno,
+ ngx_close_file_n " \"%s\" failed", filename);
+ }
+
+ RETVAL = NGX_ERROR;
+ goto done;
- if (ngx_close_file(fd) == NGX_FILE_ERROR) {
- ngx_log_error(NGX_LOG_ALERT, r->connection->log, ngx_errno,
- ngx_close_file_n " \"%s\" failed", filename);
}
- RETVAL = NGX_ERROR;
- goto done;
+ bytes = ngx_file_size(&fi) - offset;
}
cln->handler = ngx_pool_cleanup_file;
@@ -481,8 +492,9 @@ sendfile(r, filename)
clnf->log = r->pool->log;
b->in_file = 1;
- b->file_pos = 0;
- b->file_last = ngx_file_size(&fi);
+
+ b->file_pos = offset;
+ b->file_last = offset + bytes;
b->file->fd = fd;
b->file->log = r->connection->log;