Changeset 527

Show
Ignore:
Timestamp:
12/19/06 11:50:38 (2 years ago)
Author:
alo
Message:

--

Files:

Legend:

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

    r526 r527  
     12006-12-19  A.D.F  <adefacc@tin.it> 
     2 
     3        * cherokee/buffer.h: 
     4        - new function prototypes cherokee_buffer_add_*long*(). 
     5 
     6        * cherokee/buffer.c: 
     7        - changed value of REALLOC_EXTRA_SIZE 
     8          from 0 to 16; 
     9        - added new fast formatting function prototypes for numbers 
     10          (nice to have as a counterpart of string copies): 
     11          - cherokee_buffer_add_long10(); 
     12          - cherokee_buffer_add_ulong10(); 
     13          - cherokee_buffer_add_ullong10(); 
     14          - cherokee_buffer_add_ulong16(); 
     15          - cherokee_buffer_add_ullong16(); 
     16        - reverted your last change in 
     17          cherokee_buffer_read_from_fd() PRINT_ERROR(...FMT_OFFSET...) 
     18          because size_t is not an off_t 
     19          (in most systems size_t is always an unsigned int 
     20           or even an uint32_t); 
     21 
     22              NOTE: I guess that, sooner or later, 
     23              we will have to change the type of len and size 
     24              fields of cherokee_buffer_t, from int to size_t 
     25              (lot of code to review, maybe it's a 0.7 thing). 
     26 
     27        * cherokee/util.h: 
     28        - removed references to cherokee_weekdays[] and 
     29          cherokee_months[]; 
     30 
     31        * cherokee/util.c: 
     32        - removed arrays cherokee_weekdays[] and 
     33          cherokee_months[] (see dtm.c); 
     34        - minor space reformatting; 
     35 
     36        * cherokee/server.c: 
     37        - replaced cherokee_weekdays[] and cherokee_months[] 
     38          with the equivalent cherokee_dtm_wday_name() 
     39          and cherokee_dtm_month_name(); 
     40 
     41        * cherokee/connection.c: 
     42        - added a call to cherokee_buffer_ensure_size(header_buffer, 384) 
     43          before the call to "add_headers" function callback; 
     44        - added a few other cherokee_buffer_ensure_size() and 
     45          cherokee_buffer_ensure_addlen(); 
     46 
     47        * cherokee/handler_file.c: 
     48        - replaced Etag: with ETag:; 
     49        - added a call to cherokee_dtm_gmttm2str(); 
     50        - replaced a few simple cherokee_buffer_add_va() 
     51          with single calls to cherokee_buffer_add*(). 
     52 
    1532006-12-17  Alvaro Lopez Ortega  <alvaro@alobbs.com> 
    254 
  • cherokee/trunk/cherokee/buffer.c

    r526 r527  
    4242 
    4343 
    44 #define REALLOC_EXTRA_SIZE      0 
    45 #define TO_HEX(c)               (c > 9 ? c+'a'-10 : c+'0') 
     44#define REALLOC_EXTRA_SIZE     16 
     45#define IOS_NUMBUF             64       /* I/O size of digits buffer */ 
     46 
     47#define TO_HEX(c)               ((c) > 9 ? (c) + 'a' - 10 : (c) + '0') 
    4648 
    4749 
     
    144146 
    145147 
     148static ret_t 
     149realloc_inc_bufsize (cherokee_buffer_t *buf, size_t incsize) 
     150{ 
     151        char *pbuf; 
     152        size_t newsize = buf->size + incsize + REALLOC_EXTRA_SIZE + 1; 
     153 
     154        pbuf = (char *) realloc(buf->buf, newsize); 
     155        if (unlikely (pbuf == NULL))  
     156                return ret_nomem; 
     157        buf->buf = pbuf; 
     158        buf->size = (int) newsize; 
     159 
     160        return ret_ok; 
     161} 
     162 
     163 
     164static ret_t 
     165realloc_new_bufsize (cherokee_buffer_t *buf, size_t newsize) 
     166{ 
     167        char *pbuf; 
     168        newsize += REALLOC_EXTRA_SIZE + 1; 
     169 
     170        pbuf = (char *) realloc(buf->buf, newsize); 
     171        if (unlikely (pbuf == NULL))  
     172                return ret_nomem; 
     173        buf->buf = pbuf; 
     174        buf->size = (int) newsize; 
     175 
     176        return ret_ok; 
     177} 
     178 
     179 
    146180ret_t 
    147181cherokee_buffer_add (cherokee_buffer_t *buf, char *txt, size_t size) 
     
    155189         */ 
    156190        if (free < (size+1)) { 
    157                 char *pbuf; 
    158                 int newsize = buf->size + size - free + REALLOC_EXTRA_SIZE + 1; 
    159                 pbuf = (char *) realloc(buf->buf, newsize); 
    160                 if (unlikely (pbuf == NULL))  
     191                if (unlikely (realloc_inc_bufsize(buf, size - free)) != ret_ok) 
    161192                        return ret_nomem; 
    162                 buf->buf = pbuf; 
    163                 buf->size = newsize; 
    164193        } 
    165194 
     
    182211 
    183212 
     213ret_t 
     214cherokee_buffer_add_long10 (cherokee_buffer_t *buf, clong_t lNum) 
     215{ 
     216        unsigned long   ulNum = (unsigned long) lNum; 
     217        uint    flgNeg = 0; 
     218        int     newlen = 0; 
     219        size_t  i = (IOS_NUMBUF - 1); 
     220        char    szOutBuf[IOS_NUMBUF]; 
     221 
     222        if (lNum < 0L) { 
     223                flgNeg = 1; 
     224                ulNum = -ulNum; 
     225        } 
     226 
     227        szOutBuf[i] = '\0'; 
     228 
     229        /* Convert number to string 
     230         */ 
     231        do { 
     232                szOutBuf[--i] = (char) ((ulNum % 10) + '0'); 
     233        } 
     234        while ((ulNum /= 10) != 0); 
     235 
     236        /* Set sign in any case 
     237        */ 
     238        szOutBuf[--i] = '-'; 
     239        i += (flgNeg ^ 1); 
     240 
     241        /* Verify free space in buffer and if needed then enlarge it. 
     242        */ 
     243        newlen = buf->len + (int) ((IOS_NUMBUF - 1) - i); 
     244        if (unlikely( newlen >= buf->size )) { 
     245                if (unlikely (realloc_new_bufsize(buf, newlen)) != ret_ok) 
     246                        return ret_nomem; 
     247        } 
     248 
     249        /* Copy including '\0' 
     250         */ 
     251        strcpy (buf->buf + buf->len, &szOutBuf[i]); 
     252 
     253        buf->len = newlen; 
     254 
     255        return ret_ok; 
     256} 
     257 
     258 
     259ret_t 
     260cherokee_buffer_add_ulong10 (cherokee_buffer_t *buf, culong_t culNum) 
     261{ 
     262        unsigned long ulNum = culNum; 
     263        int     newlen = 0; 
     264        size_t  i = (IOS_NUMBUF - 1); 
     265        char    szOutBuf[IOS_NUMBUF]; 
     266 
     267        szOutBuf[i] = '\0'; 
     268 
     269        /* Convert number to string 
     270         */ 
     271        do { 
     272                szOutBuf[--i] = (char) ((ulNum % 10) + '0'); 
     273        } 
     274        while ((ulNum /= 10) != 0); 
     275 
     276        /* Verify free space in buffer and if needed then enlarge it. 
     277        */ 
     278        newlen = buf->len + (int) ((IOS_NUMBUF - 1) - i); 
     279        if (unlikely( newlen >= buf->size )) { 
     280                if (unlikely (realloc_new_bufsize(buf, newlen)) != ret_ok) 
     281                        return ret_nomem; 
     282        } 
     283 
     284        /* Copy including '\0' 
     285         */ 
     286        strcpy (buf->buf + buf->len, &szOutBuf[i]); 
     287 
     288        buf->len = newlen; 
     289 
     290        return ret_ok; 
     291} 
     292 
     293 
     294ret_t 
     295cherokee_buffer_add_ullong10 (cherokee_buffer_t *buf, cullong_t culNum) 
     296{ 
     297        unsigned long long ulNum = culNum; 
     298        int     newlen = 0; 
     299        size_t  i = (IOS_NUMBUF - 1); 
     300        char    szOutBuf[IOS_NUMBUF]; 
     301 
     302        szOutBuf[i] = '\0'; 
     303 
     304        /* Convert number to string 
     305         */ 
     306        do { 
     307                szOutBuf[--i] = (char) ((ulNum % 10) + '0'); 
     308        } 
     309        while ((ulNum /= 10) != 0); 
     310 
     311        /* Verify free space in buffer and if needed then enlarge it. 
     312        */ 
     313        newlen = buf->len + (int) ((IOS_NUMBUF - 1) - i); 
     314        if (unlikely( newlen >= buf->size )) { 
     315                if (unlikely (realloc_new_bufsize(buf, newlen)) != ret_ok) 
     316                        return ret_nomem; 
     317        } 
     318 
     319        /* Copy including '\0' 
     320         */ 
     321        strcpy (buf->buf + buf->len, &szOutBuf[i]); 
     322 
     323        buf->len = newlen; 
     324 
     325        return ret_ok; 
     326} 
     327 
     328 
     329/* 
     330** Add a number in hexadecimal format to (buf). 
     331*/ 
     332ret_t 
     333cherokee_buffer_add_ulong16 (cherokee_buffer_t *buf, culong_t culNum) 
     334{ 
     335        unsigned long ulNum = culNum; 
     336        size_t  i = (IOS_NUMBUF - 1); 
     337        int     ival = 0; 
     338        int     newlen = 0; 
     339        char    szOutBuf[IOS_NUMBUF]; 
     340 
     341        szOutBuf[i] = '\0'; 
     342 
     343        /* Convert number to string 
     344         */ 
     345        do { 
     346                ival = (int) (ulNum & 0xF); 
     347                szOutBuf[--i] = (char) TO_HEX(ival); 
     348        } 
     349        while ((ulNum >>= 4) != 0); 
     350 
     351        /* Verify free space in buffer and if needed then enlarge it. 
     352        */ 
     353        newlen = buf->len + (int) ((IOS_NUMBUF - 1) - i); 
     354        if (unlikely( newlen >= buf->size )) { 
     355                if (unlikely (realloc_new_bufsize(buf, newlen)) != ret_ok) 
     356                        return ret_nomem; 
     357        } 
     358 
     359        /* Copy including '\0' 
     360         */ 
     361        strcpy (buf->buf + buf->len, &szOutBuf[i]); 
     362 
     363        buf->len = newlen; 
     364 
     365        return ret_ok; 
     366} 
     367 
     368 
     369/* 
     370** Add a number in hexadecimal format to (buf). 
     371*/ 
     372ret_t 
     373cherokee_buffer_add_ullong16 (cherokee_buffer_t *buf, cullong_t culNum) 
     374{ 
     375        unsigned long long ulNum = culNum; 
     376        size_t  i = (IOS_NUMBUF - 1); 
     377        int     ival = 0; 
     378        int     newlen = 0; 
     379        char    szOutBuf[IOS_NUMBUF]; 
     380 
     381        szOutBuf[i] = '\0'; 
     382 
     383        /* Convert number to string 
     384         */ 
     385        do { 
     386                ival = (int) (ulNum & 0xF); 
     387                szOutBuf[--i] = (char) TO_HEX(ival); 
     388        } 
     389        while ((ulNum >>= 4) != 0); 
     390 
     391        /* Verify free space in buffer and if needed then enlarge it. 
     392        */ 
     393        newlen = buf->len + (int) ((IOS_NUMBUF - 1) - i); 
     394        if (unlikely( newlen >= buf->size )) { 
     395                if (unlikely (realloc_new_bufsize(buf, newlen)) != ret_ok) 
     396                        return ret_nomem; 
     397        } 
     398 
     399        /* Copy including '\0' 
     400         */ 
     401        strcpy (buf->buf + buf->len, &szOutBuf[i]); 
     402 
     403        buf->len = newlen; 
     404 
     405        return ret_ok; 
     406} 
     407 
     408 
    184409ret_t  
    185410cherokee_buffer_add_va_fixed (cherokee_buffer_t  *buf, char *format, ...) 
     
    189414 
    190415        va_start (ap, format); 
    191         len = vsnprintf (buf->buf + buf->len, buf->size - buf->len -1, format, ap); 
     416        len = vsnprintf (buf->buf + buf->len, buf->size - buf->len - 1, format, ap); 
    192417        va_end (ap); 
    193418 
     
    212437        cherokee_buffer_ensure_size (buf, buf->len + estimated_length + 2); 
    213438 
    214         len = vsnprintf (buf->buf + buf->len, buf->size - buf->len -1, format, args2); 
     439        len = vsnprintf (buf->buf + buf->len, buf->size - buf->len - 1, format, args2); 
    215440         
    216441#if 0 
     
    253478         */ 
    254479        if (free < (num+1)) { 
    255                 char *pbuf; 
    256                 int newsize = buf->size + num - free + REALLOC_EXTRA_SIZE + 1; 
    257                 pbuf = (char *) realloc(buf->buf, newsize); 
    258                 if (unlikely (pbuf == NULL)) 
     480                if (unlikely (realloc_inc_bufsize(buf, num - free)) != ret_ok) 
    259481                        return ret_nomem; 
    260                 buf->buf = pbuf; 
    261                 buf->size = newsize; 
    262482        } 
    263483 
     
    279499         */ 
    280500        if (free < (size+1)) { 
    281                 char *pbuf; 
    282                 int newsize = buf->size + size - free + REALLOC_EXTRA_SIZE + 1; 
    283                 pbuf = (char *) realloc(buf->buf, newsize); 
    284                 if (unlikely (pbuf == NULL)) 
     501                if (unlikely (realloc_inc_bufsize(buf, size - free)) != ret_ok) 
    285502                        return ret_nomem; 
    286                 buf->buf = pbuf; 
    287                 buf->size = newsize; 
    288503        } 
    289504 
     
    334549 
    335550 
     551/* 
     552 * Ensure there is enough (addlen) free space left in the buffer. 
     553 */ 
    336554ret_t 
    337555cherokee_buffer_ensure_addlen (cherokee_buffer_t *buf, size_t addlen) 
    338556{ 
    339         if (addlen < 0) 
    340                 return ret_error; 
    341  
    342557        if (buf->len + addlen < buf->size) 
    343558                return ret_ok; 
     
    609824                } 
    610825 
    611                 PRINT_ERROR ("ERROR: read(%d, " FMT_OFFSET ",..) -> errno=%d '%s'\n", fd, size, errno, strerror(errno)); 
     826                PRINT_ERROR ("ERROR: read(%d, %u,..) -> errno=%d '%s'\n", fd, size, errno, strerror(errno)); 
    612827                return ret_error; 
    613828        } 
     
    10281243                int tmp; 
    10291244 
    1030                 tmp = (digest[i] >> 4) & 0xf
     1245                tmp = ((digest[i] >> 4) & 0xf)
    10311246                buf->buf[i*2] = TO_HEX(tmp); 
    10321247 
    1033                 tmp = digest[i] & 0xf
     1248                tmp = (digest[i] & 0xf)
    10341249                buf->buf[(i*2)+1] = TO_HEX(tmp); 
    10351250        } 
     
    10851300        cherokee_buffer_t encoded = CHEROKEE_BUF_INIT; 
    10861301 
    1087         cherokee_buffer_ensure_size (&encoded, (SHA1_DIGEST_SIZE *2) + 1);     
     1302        cherokee_buffer_ensure_size (&encoded, (SHA1_DIGEST_SIZE * 2) + 1);    
    10881303 
    10891304        cherokee_buffer_encode_sha1 (buf, &encoded); 
  • cherokee/trunk/cherokee/buffer.h

    r514 r527  
    6464 
    6565ret_t cherokee_buffer_add                (cherokee_buffer_t  *buf, char *txt, size_t size); 
     66ret_t cherokee_buffer_add_long10         (cherokee_buffer_t  *buf, clong_t lNum); 
     67ret_t cherokee_buffer_add_ulong10        (cherokee_buffer_t  *buf, culong_t ulNum); 
     68ret_t cherokee_buffer_add_ullong10       (cherokee_buffer_t  *buf, cullong_t ulNum); 
     69ret_t cherokee_buffer_add_ulong16        (cherokee_buffer_t  *buf, culong_t ulNum); 
     70ret_t cherokee_buffer_add_ullong16       (cherokee_buffer_t  *buf, cullong_t ulNum); 
    6671ret_t cherokee_buffer_add_va             (cherokee_buffer_t  *buf, char *format, ...); 
    6772ret_t cherokee_buffer_add_va_fixed       (cherokee_buffer_t  *buf, char *format, ...); 
  • cherokee/trunk/cherokee/connection.c

    r526 r527  
    265265        cherokee_buffer_escape_set_ref (conn->request_escape, &conn->request); 
    266266 
     267#ifdef CHEROKEE_EMBEDDED 
    267268        cherokee_buffer_mrproper (&conn->request_original); 
     269#else 
     270        cherokee_buffer_clean (&conn->request_original); 
     271#endif 
    268272        cherokee_buffer_mrproper (&conn->encoder_buffer); 
    269273 
     
    413417         */ 
    414418        if (conn->auth_type & http_auth_basic) { 
    415                 cherokee_buffer_ensure_size (buffer, 31 + conn->realm_ref->len + 4); 
     419                cherokee_buffer_ensure_addlen (buffer, 31 + conn->realm_ref->len + 4); 
    416420                cherokee_buffer_add_str (buffer, "WWW-Authenticate: Basic realm=\""); 
    417421                cherokee_buffer_add_buffer (buffer, conn->realm_ref); 
     
    426430                /* Realm 
    427431                 */ 
    428                 cherokee_buffer_ensure_size (buffer, 32 + conn->realm_ref->len + 4); 
     432                cherokee_buffer_ensure_addlen (buffer, 32 + conn->realm_ref->len + 4); 
    429433                cherokee_buffer_add_str (buffer, "WWW-Authenticate: Digest realm=\""); 
    430434                cherokee_buffer_add_buffer (buffer, conn->realm_ref); 
     
    449453build_response_header (cherokee_connection_t *conn, cherokee_buffer_t *buffer) 
    450454{        
    451         /* Build the response header 
     455        /* Build the response header. 
    452456         */ 
    453457        cherokee_buffer_clean (buffer); 
     
    499503        /* Authentication 
    500504         */ 
    501         if ((conn->realm_ref != NULL) && (conn->error_code == http_unauthorized)) 
    502         { 
     505        if ((conn->realm_ref != NULL) && (conn->error_code == http_unauthorized)) { 
    503506                build_response_header__authenticate (conn, buffer); 
    504507        } 
     
    540543        /* Try to get the headers from the handler 
    541544         */ 
     545        cherokee_buffer_ensure_size (&(conn->header_buffer), 384); 
    542546        ret = cherokee_handler_add_headers (conn->handler, &conn->header_buffer); 
    543547        switch (ret) { 
     
    560564                } 
    561565        } 
    562          
     566 
    563567        /* Add the server headers        
    564568         */ 
     
    15431547            (strcmp (conn->request.buf, conn->web_directory.buf) == 0)) 
    15441548        { 
    1545                 cherokee_buffer_ensure_size (&conn->redirect, conn->request.len + 1); 
     1549                cherokee_buffer_ensure_size (&conn->redirect, conn->request.len + 4); 
    15461550                cherokee_buffer_add_buffer (&conn->redirect, &conn->request); 
    15471551                cherokee_buffer_add (&conn->redirect, "/", 1); 
     
    18571861               conn->local_directory.buf); 
    18581862 
    1859         /* If the connection is keep-alive, have a look at the 
    1860          * handler to see if supports it. 
     1863        /* If the connection is keep-alive 
     1864         * then verify whether the handler supports it. 
    18611865         */ 
    18621866        if ((HANDLER_SUPPORT_LENGTH(conn->handler) == 0) &&  
     
    18641868                conn->keepalive = 0; 
    18651869        } 
    1866          
    1867         /* Ensure the space for writting 
     1870 
     1871        /* Ensure the space for writing 
    18681872         */ 
    18691873        cherokee_buffer_ensure_size (&conn->buffer, DEFAULT_READ_SIZE+1); 
  • cherokee/trunk/cherokee/handler_file.c

    r495 r527  
    166166 
    167167                req_time = cherokee_dtm_str2time (header);                       
    168                 if (req_time == -1) { 
     168                if (unlikely (req_time == DTM_TIME_EVAL)) { 
    169169                        cherokee_logger_write_string ( 
    170170                                CONN_VSRV(conn)->logger,  
    171171                                "Warning: Unparseable time '%s'", 
    172172                                header); 
    173                 } 
    174                 *end = tmp;   /* restore */ 
    175                  
    176                 if (req_time == -1) { 
     173                        /* restore end of line */ 
     174                        *end = tmp; 
    177175                        return ret_ok; 
    178176                } 
     177                /* restore end of line */ 
     178                *end = tmp; 
    179179                 
    180180                /* The file is cached in the client 
     
    198198                int    tmp_len; 
    199199                CHEROKEE_TEMP(tmp,100); 
    200                  
     200 
    201201                has_etag = true; 
    202                  
    203                 tmp_len = snprintf (tmp, tmp_size, "%lx=" FMT_OFFSET_HEX, fhdl->info->st_mtime, fhdl->info->st_size); 
     202 
     203                tmp_len = snprintf (tmp, tmp_size, "%lx=" FMT_OFFSET_HEX, 
     204                                fhdl->info->st_mtime, fhdl->info->st_size); 
    204205 
    205206                if ((header_len == tmp_len) &&  
    206                     (strncmp (header, tmp, tmp_len) == 0)) 
    207                 { 
     207                    (strncmp (header, tmp, tmp_len) == 0)) { 
    208208                        not_modified_etag = true; 
    209209                } 
     
    237237                 
    238238                req_time = cherokee_dtm_str2time (header);                       
    239                 if (req_time == -1) { 
     239                if (unlikely (req_time == DTM_TIME_EVAL)) { 
    240240                        cherokee_logger_write_string ( 
    241241                                CONN_VSRV(conn)->logger,  
    242242                                "Warning: Unparseable time '%s'", 
    243243                                header); 
     244                        *end = tmp; 
     245                        return ret_ok; 
    244246                } 
    245247                *end = tmp; 
    246                  
    247                 if (req_time == -1) { 
    248                         return ret_ok; 
    249                 } 
    250248 
    251249                /* If the entity tag given in the If-Range header 
     
    544542{ 
    545543        ret_t                  ret; 
    546         off_t                  length; 
    547         struct tm              modified_tm; 
     544        size_t                 szlen = 0; 
     545        off_t                  content_length = 0; 
     546        struct tm              modified_tm = { 0 }; 
     547        char                   bufstr[DTM_SIZE_GMTTM_STR]; 
    548548        cherokee_connection_t *conn         = HANDLER_CONN(fhdl); 
    549549 
    550         /* Etag 
     550        /* ETag: 
    551551         */ 
    552552        if (conn->header.version >= http_version_11) {  
    553                 cherokee_buffer_add_va (buffer, "Etag: %lx=" FMT_OFFSET_HEX CRLF, fhdl->info->st_mtime, fhdl->info->st_size); 
     553                cherokee_buffer_add_va (buffer, "ETag: %lx=" FMT_OFFSET_HEX CRLF, fhdl->info->st_mtime, fhdl->info->st_size); 
    554554        } 
    555555 
     
    558558        cherokee_gmtime (&fhdl->info->st_mtime, &modified_tm); 
    559559 
    560         cherokee_buffer_add_va (buffer, 
    561                                 "Last-Modified: %s, %02d %s %d %02d:%02d:%02d GMT"CRLF, 
    562                                 cherokee_weekdays[modified_tm.tm_wday], 
    563                                 modified_tm.tm_mday, 
    564                                 cherokee_months[modified_tm.tm_mon],  
    565                                 modified_tm.tm_year + 1900, 
    566                                 modified_tm.tm_hour, 
    567                                 modified_tm.tm_min, 
    568                                 modified_tm.tm_sec); 
     560        szlen = cherokee_dtm_gmttm2str(bufstr, DTM_SIZE_GMTTM_STR, &modified_tm); 
     561 
     562        cherokee_buffer_add_str(buffer, "Last-Modified: "); 
     563        cherokee_buffer_add    (buffer, bufstr, szlen); 
     564        cherokee_buffer_add_str(buffer, CRLF); 
    569565 
    570566#ifndef CHEROKEE_EMBEDDED 
     
    583579                ret = cherokee_mime_entry_get_maxage (fhdl->mime, &maxage);              
    584580                if (ret == ret_ok) { 
    585                         cherokee_buffer_add_va (buffer, "Cache-Control: max-age=%u"CRLF, maxage); 
     581                        cherokee_buffer_add_str    (buffer, "Cache-Control: max-age="); 
     582                        cherokee_buffer_add_ulong10(buffer, (culong_t) maxage); 
     583                        cherokee_buffer_add_str    (buffer, CRLF); 
    586584                } 
    587585        } 
     
    601599        /* We stat()'ed the file in the handler constructor 
    602600         */ 
    603         length = conn->range_end - conn->range_start;          
    604         if (unlikely (length < 0)) 
    605                 length = 0; 
     601        content_length = conn->range_end - conn->range_start;          
     602        if (unlikely (content_length < 0)) 
     603                content_length = 0; 
    606604 
    607605        if (conn->encoder == NULL) { 
     
    614612                                                fhdl->info->st_size); 
    615613                } 
    616                  
    617                 cherokee_buffer_add_va (buffer, "Content-Length: " FMT_OFFSET CRLF, length); 
     614 
     615                cherokee_buffer_add_va (buffer, "Content-Length: " FMT_OFFSET CRLF, content_length); 
    618616 
    619617        } else { 
    620                 /* Can't use Keep-alive w/o "Content-length:", so 
     618                /* Can't use Keep-alive w/o "Content-length:", so disable it. 
    621619                 */ 
    622620                conn->keepalive = 0; 
  • cherokee/trunk/cherokee/server.c

    r526 r527  
    8080#include "mime.h" 
    8181#include "util.h" 
     82#include "dtm.h" 
    8283#include "fdpoll.h" 
    8384#include "fdpoll-protected.h" 
     
    10951096        cherokee_buffer_clean (&srv->bogo_now_string); 
    10961097        cherokee_buffer_add_va_fixed (&srv->bogo_now_string, 
    1097                                       "%s, %02d %s %d %02d:%02d:%02d GMT%c%d", 
    1098                                      cherokee_weekdays[srv->bogo_now_tm.tm_wday],  
    1099                                      srv->bogo_now_tm.tm_mday, 
    1100                                      cherokee_months[srv->bogo_now_tm.tm_mon],  
    1101                                      srv->bogo_now_tm.tm_year + 1900, 
    1102                                      srv->bogo_now_tm.tm_hour, 
    1103                                      srv->bogo_now_tm.tm_min, 
    1104                                      srv->bogo_now_tm.tm_sec, 
    1105                                      sign, offset); 
     1098                                "%s, %02d %s %d %02d:%02d:%02d GMT%c%d", 
     1099                    cherokee_dtm_wday_name(srv->bogo_now_tm.tm_wday), 
     1100                    srv->bogo_now_tm.tm_mday, 
     1101                    cherokee_dtm_month_name(srv->bogo_now_tm.tm_mon), 
     1102                    srv->bogo_now_tm.tm_year + 1900, 
     1103                    srv->bogo_now_tm.tm_hour, 
     1104                    srv->bogo_now_tm.tm_min, 
     1105                    srv->bogo_now_tm.tm_sec, 
     1106                    sign, offset); 
    11061107 
    11071108        CHEROKEE_RWLOCK_UNLOCK (&srv->bogo_now_mutex);      /* 2.- release */ 
  • cherokee/trunk/cherokee/util.c

    r526 r527  
    8585#define ENTRIES "util" 
    8686 
    87  
    8887const char *cherokee_version    = PACKAGE_VERSION; 
    89 const char *cherokee_months[]   = {"Jan", "Feb", "Mar", "Apr", "May", "Jun",  
    90                                    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; 
    91 const char *cherokee_weekdays[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; 
    9288 
    9389 
     
    548544 
    549545 
    550 #define LEN_NUM(base)      
    551         do {               \ 
     546#define LEN_NUM(base)
     547        do {                \ 
    552548                ul /= base; \ 
    553549                len++;      \ 
    554550        } while (ul > 0);   \ 
    555         len++; 
     551        len++ 
    556552 
    557553 
     
    571567                case 's': 
    572568                        p = va_arg(ap, char *); 
    573                         len += strlen (p? p: "(null)"); 
     569                        len += strlen (p ? p : "(null)"); 
    574570                        break; 
    575571                case 'd': 
  • cherokee/trunk/cherokee/util.h

    r493 r527  
    6666/* Some global information 
    6767 */ 
    68 const extern char *cherokee_months[];  
    69 const extern char *cherokee_weekdays[];  
    7068 
    7169/* System