Changeset 1766

Show
Ignore:
Timestamp:
08/07/08 17:13:47 (4 months ago)
Author:
alo
Message:

--

Files:

Legend:

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

    r1763 r1766  
    112008-08-07  Alvaro Lopez Ortega  <alvaro@alobbs.com> 
     2 
     3        * cherokee/handler_error_nn.c, cherokee/handler_error_nn.h, 
     4        qa/049-NN-broken.py, qa/048-NN.py: Fixes the NN support and adapts 
     5        the QA test to the new behavior (it is error handler now). 
    26 
    37        * cherokee/connection.c (cherokee_connection_parse_header): Adds a 
  • cherokee/trunk/cherokee/connection.c

    r1763 r1766  
    372372        if ((entry != NULL) && (entry->handler_new_func != NULL)) { 
    373373                ret = entry->handler_new_func ((void **) &conn->handler, conn, entry->handler_properties); 
    374                 if (ret == ret_ok) goto out; 
     374                if (ret == ret_ok)  
     375                        goto out; 
    375376        }  
    376377 
  • cherokee/trunk/cherokee/handler_error_nn.c

    r1734 r1766  
    133133 
    134134 
    135 ret_t  
    136 cherokee_handler_error_nn_new (cherokee_handler_t      **hdl,  
    137                                cherokee_connection_t    *conn, 
    138                                cherokee_module_props_t  *props) 
     135static ret_t  
     136error_nn_init (cherokee_handler_error_t *hdl) 
    139137{ 
    140         ret_t ret; 
     138        ret_t                  ret; 
     139        cherokee_connection_t *conn = HANDLER_CONN(hdl); 
    141140 
    142141        cherokee_buffer_clean (&conn->redirect); 
     
    145144        if (unlikely (ret != ret_ok)) { 
    146145                conn->error_code = http_not_found; 
    147                 return cherokee_handler_error_new (hdl, conn, props)
     146                return ret_error
    148147        } 
    149148 
    150         cherokee_buffer_swap_buffers (&conn->request, &conn->redirect); 
    151         cherokee_buffer_clean (&conn->redirect); 
    152  
    153         return ret_eagain; 
     149        conn->error_code = http_moved_temporarily; 
     150        return ret_error; 
    154151} 
    155152 
     153static ret_t  
     154error_nn_add_headers (cherokee_handler_error_t *hdl, cherokee_buffer_t *buffer) 
     155{ 
     156        UNUSED(hdl); 
     157        UNUSED(buffer); 
     158 
     159        return ret_ok; 
     160} 
     161 
     162static ret_t 
     163error_nn_step (cherokee_handler_error_t *hdl, cherokee_buffer_t *buffer) 
     164{ 
     165        UNUSED(hdl); 
     166        UNUSED(buffer); 
     167 
     168        return ret_eof; 
     169} 
     170 
     171static ret_t  
     172error_nn_free (cherokee_handler_error_t *hdl) 
     173{ 
     174        UNUSED(hdl); 
     175 
     176        return ret_ok; 
     177} 
     178 
     179 
     180ret_t  
     181cherokee_handler_error_nn_new (cherokee_handler_t      **hdl,  
     182                               cherokee_connection_t    *conn, 
     183                               cherokee_module_props_t  *props) 
     184{ 
     185        CHEROKEE_NEW_STRUCT (n, handler_error_nn); 
     186            
     187        cherokee_handler_init_base (HANDLER(n), conn, HANDLER_PROPS(props), PLUGIN_INFO_HANDLER_PTR(error_nn)); 
     188        HANDLER(n)->support = hsupport_error | hsupport_length; 
     189 
     190        MODULE(n)->init         = (handler_func_init_t) error_nn_init; 
     191        MODULE(n)->free         = (module_func_free_t) error_nn_free; 
     192        HANDLER(n)->step        = (handler_func_step_t) error_nn_step; 
     193        HANDLER(n)->add_headers = (handler_func_add_headers_t) error_nn_add_headers; 
     194 
     195        *hdl = HANDLER(n); 
     196        return ret_ok; 
     197} 
     198 
     199 
  • cherokee/trunk/cherokee/handler_error_nn.h

    r1734 r1766  
    3131#include "plugin_loader.h" 
    3232 
     33typedef struct { 
     34        cherokee_handler_t handler; 
     35} cherokee_handler_error_nn_t; 
     36 
    3337/* Library init function 
    3438 */ 
  • cherokee/trunk/qa/048-NN.py

    r1738 r1766  
    33MAGIC = "Sesamo" 
    44CONTENT = "This is the content of " + MAGIC 
     5HOST = "nn1" 
    56 
    67CONF = """ 
    7 vserver!1!rule!480!match = directory 
    8 vserver!1!rule!480!match!directory = /nn1 
    9 vserver!1!rule!480!handler = nn 
    10 """ 
     8vserver!480!nick = %s 
     9vserver!480!document_root = %s 
     10vserver!480!rule!1!match = default 
     11vserver!480!rule!1!handler = file 
     12vserver!480!error_handler = error_nn 
     13"""  
    1114 
    1215class Test (TestBase): 
     
    1518        self.name = "NN" 
    1619 
    17         self.request           = "GET /nn1/Xesano HTTP/1.0\r\n" 
    18         self.conf              = CONF 
    19         self.expected_error    = 200 
    20         self.expected_content = CONTENT 
    21         self.forbidden_content = "Location: " 
     20        self.request           = "GET /Xesano HTTP/1.1\r\n" + \ 
     21                                 "Host: %s\r\n" %(HOST) 
     22        self.expected_error    = 302 
     23        self.forbidden_content = CONTENT 
     24        self.expected_content  = "Location: /"+MAGIC 
    2225 
    2326    def Prepare (self, www): 
    24         self.Mkdir (www, "nn1") 
    25         self.WriteFile (www, "nn1/name") 
    26         self.WriteFile (www, "nn1/"+MAGIC, 0444, CONTENT) 
    27         self.WriteFile (www, "nn1/ABCD") 
    28         self.WriteFile (www, "nn1/alobbs") 
     27        d = self.Mkdir (www, "nn1_root") 
     28 
     29        self.WriteFile (d, "name") 
     30        self.WriteFile (d, MAGIC, 0444, CONTENT) 
     31        self.WriteFile (d, "ABCD") 
     32        self.WriteFile (d, "alobbs") 
     33 
     34        self.conf = CONF % (HOST, d) 
  • cherokee/trunk/qa/049-NN-broken.py

    r1738 r1766  
    11from base import * 
    22 
     3HOST = "nn2" 
     4 
    35CONF = """ 
    4 vserver!1!rule!490!match = directory 
    5 vserver!1!rule!490!match!directory = /missing 
    6 vserver!1!rule!490!handler = nn 
     6vserver!490!nick = %s 
     7vserver!490!document_root = %s 
     8vserver!490!rule!1!match = default 
     9vserver!490!rule!1!handler = file 
     10vserver!490!error_handler = error_nn 
    711""" 
    812 
     
    1216        self.name = "Broken NN" 
    1317 
    14         self.request          = "GET /missing/ HTTP/1.0\r\n" 
    15         self.conf             = CONF 
    16         self.expected_error   = 404 
     18        self.request        = "GET /missing HTTP/1.1\r\n" + \ 
     19                              "Host: %s\r\n" % (HOST) 
     20        self.expected_error = 404 
    1721 
     22    def Prepare (self, www): 
     23        d = self.Mkdir (www, "nn2_root") 
     24        self.conf = CONF % (HOST, d)