Changeset 1583

Show
Ignore:
Timestamp:
06/20/08 13:06:41 (4 months ago)
Author:
alo
Message:

--

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • cherokee/trunk/ChangeLog

    r1582 r1583  
    112008-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. 
    26 
    37        * qa/run-tests.py: Try to handle when -d (pause for debug) and 
  • cherokee/trunk/cherokee/handler_cgi_base.c

    r1488 r1583  
    723723xsendfile_add_headers (cherokee_handler_cgi_base_t *cgi, cherokee_buffer_t *buffer) 
    724724{ 
    725         ret_t                  ret; 
     725        ret_t                     ret; 
     726        struct stat               l_stat; 
    726727        cherokee_iocache_entry_t *cached = NULL; 
    727728        cherokee_server_t        *srv    = HANDLER_SRV(cgi); 
     
    733734                                                     &cached); 
    734735        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: 
    737748                return ret_error; 
    738749        } 
     
    740751        /* Add Content-Length 
    741752         */ 
    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); 
    745760 
    746761        cherokee_iocache_mmap_release (srv->iocache, cached);