Changeset 1583
- Timestamp:
- 06/20/08 13:06:41 (4 months ago)
- Files:
-
- cherokee/trunk/ChangeLog (modified) (1 diff)
- cherokee/trunk/cherokee/handler_cgi_base.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
cherokee/trunk/ChangeLog
r1582 r1583 1 1 2008-06-20 Alvaro Lopez Ortega <alvaro@alobbs.com> 2 3 * cherokee/handler_cgi_base.c (xsendfile_add_headers): Fixes the 4 case on which the I/O cache is full, so it cannot return a 5 cacheable object - and therefore, it has to be stat()ed locally. 2 6 3 7 * qa/run-tests.py: Try to handle when -d (pause for debug) and cherokee/trunk/cherokee/handler_cgi_base.c
r1488 r1583 723 723 xsendfile_add_headers (cherokee_handler_cgi_base_t *cgi, cherokee_buffer_t *buffer) 724 724 { 725 ret_t ret; 725 ret_t ret; 726 struct stat l_stat; 726 727 cherokee_iocache_entry_t *cached = NULL; 727 728 cherokee_server_t *srv = HANDLER_SRV(cgi); … … 733 734 &cached); 734 735 TRACE (ENTRIES, "iocache: %s, ret=%d\n", cgi->xsendfile.buf, ret); 735 736 if ((ret != ret_ok) || (! cached)) { 736 switch (ret) { 737 case ret_ok: 738 break; 739 case ret_no_sys: 740 /* Stat() it if the cache was full 741 */ 742 ret = cherokee_stat (cgi->xsendfile.buf, &l_stat); 743 if (ret != ret_ok) { 744 return ret_error; 745 } 746 break; 747 default: 737 748 return ret_error; 738 749 } … … 740 751 /* Add Content-Length 741 752 */ 742 cherokee_buffer_add_str (buffer, "Content-Length: "); 743 cherokee_buffer_add_ullong10 (buffer, (cullong_t) cached->state.st_size); 744 cherokee_buffer_add_str (buffer, CRLF); 753 cherokee_buffer_add_str (buffer, "Content-Length: "); 754 if (cached) { 755 cherokee_buffer_add_ullong10 (buffer, (cullong_t) cached->state.st_size); 756 } else { 757 cherokee_buffer_add_ullong10 (buffer, (cullong_t) l_stat.st_size); 758 } 759 cherokee_buffer_add_str (buffer, CRLF); 745 760 746 761 cherokee_iocache_mmap_release (srv->iocache, cached);