Changeset 578

Show
Ignore:
Timestamp:
01/03/07 00:03:38 (2 years ago)
Author:
alo
Message:

--

Files:

Legend:

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

    r573 r578  
     12007-01-02  A.D.F  <adefacc@tin.it> 
     2 
     3        * cherokee/handler_error.c (build_hardcoded_response_page): 
     4        - added a cherokee_buffer_ensure_addlen(buffer, 1000) 
     5          to avoid too many reallocations; 
     6        - replaced cherokee_buffer_add_va() for equivalent 
     7          cherokee_buffer_add_*() calls; 
     8 
     9        * cherokee/buffer.c: 
     10        - added cherokee_buffer_substitute_string() 
     11          which takes an additional parameter (destination buffer) 
     12          and so does not need to reallocate memory unless 
     13          this is really needed (cherokee_buffer_replace_string()) 
     14          has not been touched); 
     15 
     16        * cherokee/thread.h, cherokee/thread.c: 
     17        - added a second temporary buffer to cherokee_thread_t 
     18          because the need for two temporary buffers is not uncommon; 
     19 
     20        * cherokee/handler_file.c: 
     21        - changed macro from THREAD_TMP_BUF() to THREAD_TMP_BUF1(); 
     22 
     23        * cherokee/handler_dirlist.c: 
     24        - changed code to use cherokee_buffer_substitute_string() 
     25          by using two temporary buffers (coming from the current thread) 
     26          and alternating the substitutions from one temporary 
     27          buffer to the other (stuff is copied from source to destination 
     28          if cherokee_buffer_substitute_string() returns ret_ok; 
     29        - changed name to the token macro, 
     30          from: replace_token(); 
     31            to: substitute_token(). 
     32         
    1332007-01-01  Alvaro Lopez Ortega  <alvaro@alobbs.com> 
    234 
  • cherokee/trunk/cherokee/buffer.c

    r550 r578  
    15071507        } 
    15081508         
    1509         /* If no substring have been found, then return now. 
     1509        /* If no substring has been found, then return now. 
    15101510         */ 
    15111511        if (p == buf->buf) 
     
    15591559 
    15601560 
     1561/* Returns: 
     1562 *  ret_ok          bufdst has been written with the substitution string(s) 
     1563 *  ret_not_found   substring not found in bufsrc 
     1564 *  ret_deny        bad formal parameters 
     1565 *  ret_xxx         fatal error (failed allocation, etc.) 
     1566 */ 
     1567ret_t  
     1568cherokee_buffer_substitute_string (cherokee_buffer_t *bufsrc,  
     1569                                   cherokee_buffer_t *bufdst, 
     1570                                   char *substring,   int substring_length,  
     1571                                   char *replacement, int replacement_length) 
     1572{ 
     1573        ret_t       ret; 
     1574        int         remaining_length; 
     1575        int         result_length; 
     1576        char       *result_position; 
     1577        const char *p; 
     1578        const char *substring_position; 
     1579 
     1580        /* Verify formal parameters 
     1581         * (those which are not tested would raise a segment violation). 
     1582         */ 
     1583        if (bufsrc->buf == NULL || 
     1584            bufdst->buf == NULL || 
     1585            substring == NULL || substring_length < 1 || 
     1586            replacement == NULL || replacement_length < 0) 
     1587                return ret_deny; 
     1588 
     1589        /* Clean / reset destination buffer. 
     1590         */ 
     1591        bufdst->buf[0] = '\0'; 
     1592        bufdst->len = 0; 
     1593 
     1594        /* Calculate the new size 
     1595         */ 
     1596        result_length = bufsrc->len; 
     1597        for (p = bufsrc->buf; ; p = substring_position + substring_length) { 
     1598                substring_position = strstr (p, substring); 
     1599 
     1600                if (substring_position == NULL) 
     1601                        break; 
     1602 
     1603                result_length += (replacement_length - substring_length); 
     1604        } 
     1605         
     1606        /* If no substring has been found, then return now. 
     1607         */ 
     1608        if (p == bufsrc->buf) 
     1609                return ret_not_found; 
     1610 
     1611        /* If resulting length is zero, then return now. 
     1612         */ 
     1613        if (result_length < 1) { 
     1614                return ret_ok; 
     1615        } 
     1616 
     1617        /* Preset size of destination buffer. 
     1618         */ 
     1619        ret = cherokee_buffer_ensure_size(bufdst, result_length + 2); 
     1620 
     1621        /* Build the new string 
     1622         */ 
     1623        result_position = bufdst->buf; 
     1624 
     1625        for (p = bufsrc->buf; ; p = substring_position + substring_length) { 
     1626                substring_position = strstr (p, substring); 
     1627 
     1628                if (substring_position == NULL) { 
     1629                        remaining_length = (int) (&(bufsrc->buf[bufsrc->len]) - p); 
     1630                        memcpy (result_position, p, remaining_length); 
     1631                        result_position += remaining_length; 
     1632                        break; 
     1633                } 
     1634                memcpy (result_position, p, substring_position - p); 
     1635                result_position += (int) (substring_position - p); 
     1636 
     1637                memcpy (result_position, replacement, replacement_length); 
     1638                result_position += replacement_length; 
     1639        }        
     1640 
     1641        /* Terminate the destination buffer 
     1642         */ 
     1643        *result_position = '\0'; 
     1644        bufdst->len  = result_length; 
     1645 
     1646        return ret_ok;   
     1647} 
     1648 
     1649 
    15611650ret_t  
    15621651cherokee_buffer_add_comma_marks (cherokee_buffer_t  *buf) 
  • cherokee/trunk/cherokee/buffer.h

    r550 r578  
    9696ret_t cherokee_buffer_remove_chunk       (cherokee_buffer_t  *buf, int from, int len); 
    9797ret_t cherokee_buffer_replace_string     (cherokee_buffer_t  *buf, char *subs, int subs_len, char *repl, int repl_len); 
     98ret_t cherokee_buffer_substitute_string  (cherokee_buffer_t  *bufsrc, cherokee_buffer_t *bufdst, char *subs, int subs_len, char *repl, int repl_len); 
    9899 
    99100ret_t cherokee_buffer_ensure_addlen      (cherokee_buffer_t  *buf, size_t alen); 
  • cherokee/trunk/cherokee/handler_dirlist.c

    r541 r578  
    389389        if (cherokee_buffer_is_empty (&HDL_DIRLIST_PROP(n)->entry)  || 
    390390            cherokee_buffer_is_empty (&HDL_DIRLIST_PROP(n)->header) || 
    391             cherokee_buffer_is_empty (&HDL_DIRLIST_PROP(n)->footer)) 
    392         { 
     391            cherokee_buffer_is_empty (&HDL_DIRLIST_PROP(n)->footer)) { 
    393392                PRINT_ERROR_S ("The theme is incomplete\n"); 
    394393                return ret_error; 
     
    687686 
    688687static ret_t 
    689 replace_token_guts (cherokee_buffer_t *buf, char *token, char token_len, char *replacement) 
     688substitute_token_guts (cherokee_buffer_t *buf1, cherokee_buffer_t *buf2, char *token, char token_len, char *replacement) 
    690689{ 
    691690        if (replacement == NULL) { 
    692                 return cherokee_buffer_replace_string (buf, token, token_len, "", 0); 
    693         } 
    694  
    695         return cherokee_buffer_replace_string (buf, token, token_len, replacement, strlen(replacement)); 
     691                return cherokee_buffer_substitute_string (buf1, buf2, token, token_len, "", 0); 
     692        } 
     693 
     694        return cherokee_buffer_substitute_string (buf1, buf2, token, token_len, replacement, strlen(replacement)); 
    696695} 
    697696 
     
    706705        cherokee_buffer_t                *tmp      = &dhdl->header; 
    707706        cherokee_handler_dirlist_props_t *props    = HDL_DIRLIST_PROP(dhdl); 
    708  
    709 #define replace_token(buf,token,val) \ 
    710         replace_token_guts(buf,token,sizeof(token)-1,val) 
     707        cherokee_thread_t                *thread   = HANDLER_THREAD(dhdl); 
     708        size_t                            idx_tmp  = 0; 
     709        cherokee_buffer_t                *vtmp[2]; 
     710 
     711#define substitute_token(idx, token, val) \ 
     712        (idx = (substitute_token_guts(vtmp[idx], vtmp[(idx) ^ 1], token, sizeof(token)-1, (val)) == ret_ok ? (idx ^ 1) : (idx & 1))) 
     713 
     714        /* Initialize array of tmp buffers 
     715         */ 
     716        vtmp[0] = THREAD_TMP_BUF1(thread); 
     717        vtmp[1] = THREAD_TMP_BUF2(thread); 
     718 
     719        /* Clear tmp buffers. 
     720         */ 
     721        cherokee_buffer_clean(vtmp[0]); 
     722        cherokee_buffer_clean(vtmp[1]); 
    711723 
    712724        /* Add entry text 
    713725         */ 
    714         cherokee_buffer_add_buffer (buffer, &props->entry); 
     726        cherokee_buffer_add_buffer (vtmp[0], &props->entry); 
    715727         
    716728        /* Add the icon 
     
    731743#endif 
    732744 
    733         replace_token (buffer, "%icon_alt%", alt); 
    734         replace_token (buffer, "%icon%", icon); 
     745        substitute_token (idx_tmp, "%icon_alt%", alt); 
     746        substitute_token (idx_tmp, "%icon%", icon); 
    735747 
    736748        /* File 
    737749         */ 
    738         replace_token (buffer, "%file_name%", name); 
    739         replace_token (buffer, "%file_link%", name); 
     750        substitute_token (idx_tmp, "%file_name%", name); 
     751        substitute_token (idx_tmp, "%file_link%", name); 
    740752 
    741753        /* Date 
     
    746758 
    747759                strftime (tmp->buf, 32, "%d-%b-%Y %H:%M", localtime(&file->stat.st_mtime)); 
    748                 replace_token (buffer, "%date%", tmp->buf); 
     760                substitute_token (idx_tmp, "%date%", tmp->buf); 
    749761        }  
    750762 
     
    753765        if (props->show_size) { 
    754766                if (is_dir) { 
    755                         replace_token (buffer, "%size_unit%", NULL); 
    756                         replace_token (buffer, "%size%", "-"); 
     767                        substitute_token (idx_tmp, "%size_unit%", NULL); 
     768                        substitute_token (idx_tmp, "%size%", "-"); 
    757769                } else { 
    758770                        char *unit; 
    759771 
    760772                        cherokee_buffer_clean (tmp); 
    761                         cherokee_buffer_ensure_size (tmp, 6); 
     773                        cherokee_buffer_ensure_size (tmp, 8); 
    762774 
    763775                        cherokee_strfsize (file->stat.st_size, tmp->buf); 
     
    766778                        while ((*unit >= '0')  && (*unit <= '9')) unit++; 
    767779 
    768                         replace_token (buffer, "%size_unit%", unit); 
     780                        substitute_token (idx_tmp, "%size_unit%", unit); 
    769781                        *unit = '\0'; 
    770                         replace_token (buffer, "%size%", tmp->buf); 
     782                        substitute_token (idx_tmp, "%size%", tmp->buf); 
    771783                } 
    772784        }  
     
    781793                name = (char *) (user->pw_name) ? user->pw_name : "unknown"; 
    782794 
    783                 replace_token (buffer, "%user%", name); 
     795                substitute_token (idx_tmp, "%user%", name); 
    784796        }  
    785797 
     
    793805                group = (char *) (user->gr_name) ? user->gr_name : "unknown"; 
    794806                 
    795                 replace_token (buffer, "%group%", group); 
    796         } 
     807                substitute_token (idx_tmp, "%group%", group); 
     808        } 
     809 
     810        /* Add final result to buffer 
     811         */ 
     812        cherokee_buffer_add_buffer (buffer, vtmp[idx_tmp]); 
    797813 
    798814        return ret_ok; 
     
    806822        cherokee_icons_t                 *icons    = HANDLER_SRV(dhdl)->icons; 
    807823        cherokee_handler_dirlist_props_t *props    = HDL_DIRLIST_PROP(dhdl); 
    808  
    809         cherokee_buffer_add_buffer (buffer, &props->entry); 
     824        cherokee_thread_t                *thread   = HANDLER_THREAD(dhdl); 
     825        cherokee_buffer_t                *vtmp[2]; 
     826        size_t                            idx_tmp = 0; 
     827 
     828        /* Initialize array of tmp buffers 
     829         */ 
     830        vtmp[0] = THREAD_TMP_BUF1(thread); 
     831        vtmp[1] = THREAD_TMP_BUF2(thread); 
     832 
     833        /* Clear tmp buffers. 
     834         */ 
     835        cherokee_buffer_clean(vtmp[0]); 
     836        cherokee_buffer_clean(vtmp[1]); 
     837 
     838        /* Add entry text 
     839         */ 
     840        cherokee_buffer_add_buffer (vtmp[0], &props->entry); 
    810841 
    811842#ifndef CHEROKEE_EMBEDDED 
     
    815846#endif 
    816847 
    817         replace_token (buffer, "%icon%", icon); 
    818         replace_token (buffer, "%icon_alt%", "[DIR]"); 
    819  
    820         replace_token (buffer, "%file_link%", "../"); 
    821         replace_token (buffer, "%file_name%", "Parent Directory"); 
    822  
    823         replace_token (buffer, "%date%", NULL); 
    824         replace_token (buffer, "%size_unit%", NULL); 
    825         replace_token (buffer, "%size%", "-"); 
    826         replace_token (buffer, "%user%", NULL); 
    827         replace_token (buffer, "%group%", NULL); 
    828  
    829         return ret_ok; 
    830 
    831  
    832  
    833 static ret_t 
    834 replace_header_footer_vbles (cherokee_handler_dirlist_t *dhdl, cherokee_buffer_t *buffer) 
    835 
     848        substitute_token (idx_tmp, "%icon%", icon); 
     849        substitute_token (idx_tmp, "%icon_alt%", "[DIR]"); 
     850 
     851        substitute_token (idx_tmp, "%file_link%", "../"); 
     852        substitute_token (idx_tmp, "%file_name%", "Parent Directory"); 
     853 
     854        substitute_token (idx_tmp, "%date%", NULL); 
     855        substitute_token (idx_tmp, "%size_unit%", NULL); 
     856        substitute_token (idx_tmp, "%size%", "-"); 
     857        substitute_token (idx_tmp, "%user%", NULL); 
     858        substitute_token (idx_tmp, "%group%", NULL); 
     859 
     860        /* Add final result to buffer 
     861         */ 
     862        cherokee_buffer_add_buffer (buffer, vtmp[idx_tmp]); 
     863 
     864        return ret_ok; 
     865
     866 
     867 
     868static ret_t 
     869render_header_footer_vbles (cherokee_handler_dirlist_t *dhdl, cherokee_buffer_t *buffer, cherokee_buffer_t *bufpattern) 
     870
     871        cherokee_thread_t                *thread   = HANDLER_THREAD(dhdl); 
     872        cherokee_buffer_t                *vtmp[2]; 
     873        size_t                            idx_tmp = 0; 
     874 
     875        /* Initialize array of tmp buffers 
     876         */ 
     877        vtmp[0] = THREAD_TMP_BUF1(thread); 
     878        vtmp[1] = THREAD_TMP_BUF2(thread); 
     879 
     880        /* Clear tmp buffers. 
     881         */ 
     882        cherokee_buffer_clean(vtmp[0]); 
     883        cherokee_buffer_clean(vtmp[1]); 
     884 
     885        /* Add entry text 
     886         */ 
     887        cherokee_buffer_add_buffer (vtmp[0], bufpattern); 
     888 
    836889        /* Public dir 
    837890         */ 
    838         replace_token (buffer, "%public_dir%", dhdl->public_dir.buf); 
     891        substitute_token (idx_tmp, "%public_dir%", dhdl->public_dir.buf); 
    839892 
    840893        /* Server software 
    841894         */ 
    842         replace_token (buffer, "%server_software%", dhdl->software_str_ref->buf); 
     895        substitute_token (idx_tmp, "%server_software%", dhdl->software_str_ref->buf); 
    843896 
    844897        /* Notice 
    845898         */ 
    846         replace_token (buffer, "%notice%", dhdl->header.buf); 
     899        substitute_token (idx_tmp, "%notice%", dhdl->header.buf); 
    847900 
    848901        /* Orders 
    849902         */ 
    850         replace_token (buffer, "%order_name%",  
     903        substitute_token (idx_tmp, "%order_name%",  
    851904                       (dhdl->sort == Name_Down) ? "N" : "n"); 
    852         replace_token (buffer, "%order_size%",  
     905        substitute_token (idx_tmp, "%order_size%",  
    853906                       (dhdl->sort == Size_Down) ? "S" : "s"); 
    854         replace_token (buffer, "%order_date%",  
     907        substitute_token (idx_tmp, "%order_date%",  
    855908                       (dhdl->sort == Date_Down) ? "D" : "d"); 
     909 
     910        /* Add final result to buffer 
     911         */ 
     912        cherokee_buffer_add_buffer (buffer, vtmp[idx_tmp]); 
    856913 
    857914        return ret_ok; 
     
    862919cherokee_handler_dirlist_step (cherokee_handler_dirlist_t *dhdl, cherokee_buffer_t *buffer) 
    863920{ 
    864         ret_t                             ret
     921        ret_t                             ret = ret_ok
    865922        cherokee_handler_dirlist_props_t *props = HDL_DIRLIST_PROP(dhdl); 
    866923 
     
    869926                /* Add the theme header 
    870927                 */ 
    871                 cherokee_buffer_add_buffer (buffer, &props->header); 
    872  
    873                 ret = replace_header_footer_vbles (dhdl, buffer); 
     928                ret = render_header_footer_vbles (dhdl, buffer, &props->header); 
    874929                if (unlikely (ret != ret_ok)) return ret; 
    875  
    876930                if (buffer->len > DEFAULT_READ_SIZE) 
    877931                        return ret_ok; 
     
    881935                ret = render_parent_directory (dhdl, buffer); 
    882936                if (unlikely (ret != ret_ok)) return ret; 
    883  
    884937                dhdl->phase = dirlist_phase_add_entries; 
    885938 
    886939        case dirlist_phase_add_entries: 
    887  
    888940                /* Print the directories first 
    889941                 */ 
     
    896948                        dhdl->dir_ptr = dhdl->dir_ptr->next; 
    897949 
    898                         /* Maybe it has readed enought 
     950                        /* Maybe it has readed enough data 
    899951                         */ 
    900952                        if (buffer->len > DEFAULT_READ_SIZE)  
     
    912964                        dhdl->file_ptr = dhdl->file_ptr->next; 
    913965 
    914                         /* Maybe it has readed enought 
     966                        /* Maybe it has readed enough data 
    915967                         */ 
    916968                        if (buffer->len > DEFAULT_READ_SIZE)  
    917969                                return ret_ok; 
    918970                } 
    919  
    920971                dhdl->phase = dirlist_phase_add_footer; 
    921972 
    922973        case dirlist_phase_add_footer: 
    923                 cherokee_buffer_add_buffer (buffer, &props->footer); 
    924  
    925                 ret = replace_header_footer_vbles (dhdl, buffer); 
     974                /* Add the theme footer 
     975                 */ 
     976                ret = render_header_footer_vbles (dhdl, buffer, &props->footer); 
    926977                if (unlikely (ret != ret_ok)) return ret; 
    927  
    928978                break; 
    929979        } 
  • cherokee/trunk/cherokee/handler_error.c

    r563 r578  
    6363         */ 
    6464        ret = cherokee_buffer_init (&n->content); 
    65         if (unlikely(ret < ret_ok)) return ret; 
     65        if (unlikely(ret < ret_ok)) 
     66                return ret; 
    6667 
    6768        /* Return the object 
     
    8586        cherokee_buffer_t *escaped = NULL; 
    8687 
     88        /* Avoid too many reallocations. 
     89         */ 
     90        cherokee_buffer_ensure_addlen (buffer, 1000); 
     91 
     92        /* Build error message. 
     93         */ 
     94 
     95        /* Add document header 
     96         */ 
    8797        cherokee_buffer_add_str (buffer, "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">" CRLF); 
    8898            
    8999        /* Add page title 
    90100         */ 
    91         cherokee_buffer_add_str (buffer, "<html><head><title>"); 
     101        cherokee_buffer_add_str (buffer, "<html>" CRLF "<head><title>"); 
    92102        cherokee_http_code_copy (cnt->error_code, buffer); 
    93103 
    94104        /* Add big banner 
    95105         */ 
    96         cherokee_buffer_add_str (buffer, "</title></head><body><h1>"); 
     106        cherokee_buffer_add_str (buffer, "</title></head>" CRLF "<body>" CRLF "<h1>"); 
    97107        cherokee_http_code_copy (cnt->error_code, buffer); 
    98         cherokee_buffer_add_str (buffer, "</h1>"); 
     108        cherokee_buffer_add_str (buffer, "</h1>" CRLF); 
    99109 
    100110        /* Maybe add some info 
     
    110120                        cherokee_buffer_escape_get_html (cnt->request_escape, &req_html_ref); 
    111121 
    112                         cherokee_buffer_ensure_size (buffer, 18 + req_html_ref->len + 30); 
     122                        cherokee_buffer_ensure_addlen (buffer, 19 + req_html_ref->len + 30); 
    113123                        cherokee_buffer_add_str (buffer, "The requested URL "); 
    114124                        cherokee_buffer_add_buffer (buffer, req_html_ref); 
     
    116126                } 
    117127                break; 
     128 
    118129        case http_bad_request: 
    119130                cherokee_buffer_add_str (buffer,  
     
    121132 
    122133                cherokee_buffer_escape_html (cnt->header.input_buffer, &escaped); 
    123                 if (escaped == NULL) 
    124                         cherokee_buffer_add_va (buffer, "<p><pre>%s</pre>", cnt->header.input_buffer->buf); 
    125                 else { 
    126                         cherokee_buffer_add_va (buffer, "<p><pre>%s</pre>", escaped->buf); 
     134                if (escaped == NULL) { 
     135                        cherokee_buffer_add_str   (buffer, "<p><pre>"); 
     136                        cherokee_buffer_add_buffer(buffer, cnt->header.input_buffer); 
     137                        cherokee_buffer_add_str   (buffer, "</pre>"); 
     138                } else { 
     139                        cherokee_buffer_add_str   (buffer, "<p><pre>"); 
     140                        cherokee_buffer_add_buffer(buffer, escaped); 
     141                        cherokee_buffer_add_str   (buffer, "</pre>"); 
    127142                        cherokee_buffer_free (escaped); 
    128143                        escaped = NULL; 
    129144                } 
    130145                break; 
    131         case http_access_denied: 
     146 
     147        case http_access_denied: 
    132148                cherokee_buffer_add_str (buffer, 
    133149                        "You have no access to the requested URL"); 
    134150                break; 
     151 
    135152        case http_request_entity_too_large: 
    136153                cherokee_buffer_add_str (buffer, 
    137154                        "The length of request entity exceeds the capacity limit for this server."); 
    138155                break; 
     156 
    139157        case http_request_uri_too_long: 
    140158                cherokee_buffer_add_str (buffer, 
    141159                        "The length of requested URL exceeds the capacity limit for this server."); 
    142160                break;           
     161 
    143162        case http_range_not_satisfiable: 
    144163                cherokee_buffer_add_str (buffer, 
    145164                        "The requested range was not satisfiable."); 
    146165                break;           
     166 
    147167        case http_moved_permanently: 
    148168        case http_moved_temporarily: 
    149                 cherokee_buffer_add_str    (buffer, "The document has moved <A HREF=\""); 
     169                cherokee_buffer_add_str    (buffer, "The document has moved <a href=\""); 
    150170                cherokee_buffer_add_buffer (buffer, &cnt->redirect); 
    151                 cherokee_buffer_add_str    (buffer, "\">here</A>."); 
    152                 break; 
     171                cherokee_buffer_add_str    (buffer, "\">here</a>."); 
     172                break; 
     173 
    153174        case http_unauthorized: 
    154175                cherokee_buffer_add_str (buffer,  
     
    157178                        "or your browser doesn't know how to supply the credentials required."); 
    158179                break; 
     180 
    159181        case http_upgrade_required: 
    160182                cherokee_buffer_add_str (buffer, 
     
    164186                        "using https://"); 
    165187                break; 
     188 
    166189        default: 
    167190                break; 
    168191        } 
    169             
     192 
    170193        /* Add page footer 
    171194         */ 
    172         cherokee_buffer_add_str (buffer, "<p><hr>");    
     195        cherokee_buffer_add_str (buffer, CRLF "<p><hr>" CRLF); 
    173196 
    174197        if (cnt->socket.is_tls == non_TLS) 
     
    177200                cherokee_buffer_add_buffer (buffer, &CONN_SRV(cnt)->ext_server_w_port_tls_string); 
    178201 
    179         cherokee_buffer_add_str (buffer, "</body></html>");  
     202        cherokee_buffer_add_str (buffer, CRLF "</body>" CRLF "</html>" CRLF); 
    180203 
    181204        return ret_ok; 
     
    195218        if (http_code_with_body (conn->error_code)) { 
    196219                ret = build_hardcoded_response_page (conn, &hdl->content); 
    197                 if (unlikely(ret < ret_ok)) return ret; 
     220                if (unlikely(ret < ret_ok)) 
     221                        return ret; 
    198222        } 
    199223 
     
    250274 
    251275        cherokee_buffer_add_str     (buffer, "Content-length: "); 
    252         cherokee_buffer_add_ulong10 (buffer, hdl->content.len); 
     276        cherokee_buffer_add_ulong10 (buffer, (culong_t) hdl->content.len); 
    253277        cherokee_buffer_add_str     (buffer, CRLF); 
    254278 
     
    269293         */ 
    270294        ret = cherokee_buffer_add_buffer (buffer, &hdl->content); 
    271         if (unlikely(ret < ret_ok)) return ret; 
     295        if (unlikely(ret < ret_ok)) 
     296                return ret; 
    272297            
    273298        return ret_eof_have_data; 
  • cherokee/trunk/cherokee/handler_file.c

    r551 r578  
    197197        ret = cherokee_header_get_known (&conn->header, header_if_none_match, &header, &header_len); 
    198198        if (ret == ret_ok)  { 
    199                 cherokee_buffer_t *tmp = THREAD_TMP_BUF(thread); 
     199                cherokee_buffer_t *tmp = THREAD_TMP_BUF1(thread); 
    200200 
    201201                /* Temporary buffer has already been pre-allocated, 
  • cherokee/trunk/cherokee/thread.c

    r551 r578  
    214214        /* Temporary buffer used by utility functions 
    215215         */ 
    216         cherokee_buffer_init (&n->tmp_buf); 
    217         cherokee_buffer_ensure_size (&n->tmp_buf, 4096);         
     216        cherokee_buffer_init (&n->tmp_buf1); 
     217        cherokee_buffer_init (&n->tmp_buf2); 
     218        cherokee_buffer_ensure_size (&n->tmp_buf1, 4096);        
     219        cherokee_buffer_ensure_size (&n->tmp_buf2, 4096);        
    218220 
    219221        /* Accepting information 
     
    12661268 
    12671269        cherokee_buffer_mrproper (&thd->bogo_now_string); 
    1268         cherokee_buffer_mrproper (&thd->tmp_buf); 
     1270        cherokee_buffer_mrproper (&thd->tmp_buf1); 
     1271        cherokee_buffer_mrproper (&thd->tmp_buf2); 
    12691272 
    12701273        cherokee_fdpoll_free (thd->fdpoll); 
  • cherokee/trunk/cherokee/thread.h

    r551 r578  
    6868        cherokee_buffer_t       bogo_now_string; 
    6969 
    70         cherokee_buffer_t       tmp_buf; 
     70        cherokee_buffer_t       tmp_buf1; 
     71        cherokee_buffer_t       tmp_buf2; 
    7172         
    7273        void                   *server; 
     
    9697#define THREAD_SRV(t)     (SRV(THREAD(t)->server)) 
    9798#define THREAD_IS_REAL(t) (THREAD(t)->real_thread) 
    98 #define THREAD_TMP_BUF(t) (&THREAD(t)->tmp_buf) 
     99#define THREAD_TMP_BUF1(t) (&THREAD(t)->tmp_buf1) 
     100#define THREAD_TMP_BUF2(t) (&THREAD(t)->tmp_buf2) 
    99101 
    100102