Changeset 387
- Timestamp:
- 09/04/06 12:19:04 (2 years ago)
- Files:
-
- cherokee/trunk/cherokee/Makefile.am (modified) (2 diffs)
- cherokee/trunk/cherokee/balancer.c (modified) (5 diffs)
- cherokee/trunk/cherokee/balancer.h (modified) (1 diff)
- cherokee/trunk/cherokee/balancer_round_robin.c (modified) (5 diffs)
- cherokee/trunk/cherokee/balancer_round_robin.h (modified) (1 diff)
- cherokee/trunk/cherokee/config_entry.c (modified) (1 diff)
- cherokee/trunk/cherokee/config_entry.h (modified) (2 diffs)
- cherokee/trunk/cherokee/ext_source.c (deleted)
- cherokee/trunk/cherokee/ext_source.h (deleted)
- cherokee/trunk/cherokee/fcgi_dispatcher.c (modified) (1 diff)
- cherokee/trunk/cherokee/fcgi_dispatcher.h (modified) (1 diff)
- cherokee/trunk/cherokee/fcgi_manager.c (modified) (5 diffs)
- cherokee/trunk/cherokee/fcgi_manager.h (modified) (3 diffs)
- cherokee/trunk/cherokee/handler.c (modified) (2 diffs)
- cherokee/trunk/cherokee/handler.h (modified) (5 diffs)
- cherokee/trunk/cherokee/handler_admin.c (modified) (1 diff)
- cherokee/trunk/cherokee/handler_admin.h (modified) (1 diff)
- cherokee/trunk/cherokee/handler_cgi.c (modified) (3 diffs)
- cherokee/trunk/cherokee/handler_cgi.h (modified) (2 diffs)
- cherokee/trunk/cherokee/handler_cgi_base.c (modified) (2 diffs)
- cherokee/trunk/cherokee/handler_cgi_base.h (modified) (3 diffs)
- cherokee/trunk/cherokee/handler_common.c (modified) (6 diffs)
- cherokee/trunk/cherokee/handler_common.h (modified) (2 diffs)
- cherokee/trunk/cherokee/handler_dirlist.c (modified) (4 diffs)
- cherokee/trunk/cherokee/handler_dirlist.h (modified) (2 diffs)
- cherokee/trunk/cherokee/handler_error.c (modified) (1 diff)
- cherokee/trunk/cherokee/handler_error.h (modified) (1 diff)
- cherokee/trunk/cherokee/handler_error_redir.c (modified) (3 diffs)
- cherokee/trunk/cherokee/handler_error_redir.h (modified) (2 diffs)
- cherokee/trunk/cherokee/handler_fastcgi.c (modified) (7 diffs)
- cherokee/trunk/cherokee/handler_fastcgi.h (modified) (3 diffs)
- cherokee/trunk/cherokee/handler_fcgi.c (modified) (7 diffs)
- cherokee/trunk/cherokee/handler_fcgi.h (modified) (4 diffs)
- cherokee/trunk/cherokee/handler_file.c (modified) (3 diffs)
- cherokee/trunk/cherokee/handler_file.h (modified) (2 diffs)
- cherokee/trunk/cherokee/handler_nn.c (modified) (2 diffs)
- cherokee/trunk/cherokee/handler_nn.h (modified) (1 diff)
- cherokee/trunk/cherokee/handler_phpcgi.c (modified) (3 diffs)
- cherokee/trunk/cherokee/handler_phpcgi.h (modified) (1 diff)
- cherokee/trunk/cherokee/handler_proxy.c (modified) (4 diffs)
- cherokee/trunk/cherokee/handler_proxy.h (modified) (2 diffs)
- cherokee/trunk/cherokee/handler_redir.c (modified) (3 diffs)
- cherokee/trunk/cherokee/handler_redir.h (modified) (2 diffs)
- cherokee/trunk/cherokee/handler_scgi.c (modified) (15 diffs)
- cherokee/trunk/cherokee/handler_scgi.h (modified) (4 diffs)
- cherokee/trunk/cherokee/handler_server_info.c (modified) (3 diffs)
- cherokee/trunk/cherokee/handler_server_info.h (modified) (2 diffs)
- cherokee/trunk/cherokee/module.c (modified) (1 diff)
- cherokee/trunk/cherokee/module.h (modified) (3 diffs)
- cherokee/trunk/cherokee/source.c (added)
- cherokee/trunk/cherokee/source.h (added)
- cherokee/trunk/cherokee/source_interpreter.c (added)
- cherokee/trunk/cherokee/source_interpreter.h (added)
- cherokee/trunk/qa/126-SCGI.py (modified) (2 diffs)
- cherokee/trunk/qa/127-SCGI-Post.py (modified) (2 diffs)
- cherokee/trunk/qa/run-tests.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
cherokee/trunk/cherokee/Makefile.am
r384 r387 750 750 751 751 libcherokee_server_la_SOURCES = \ 752 source.h \ 753 source.c \ 754 source_interpreter.h \ 755 source_interpreter.c \ 752 756 $(static_handler_file_src) \ 753 757 $(static_handler_admin_src) \ … … 825 829 nonce.h \ 826 830 nonce.c \ 827 ext_source.h \828 ext_source.c \829 831 config_node.h \ 830 832 config_node.c \ 831 833 balancer.h \ 832 balancer.c 834 balancer.c 833 835 834 836 libcherokee_config_la_SOURCES = \ cherokee/trunk/cherokee/balancer.c
r381 r387 25 25 #include "common-internal.h" 26 26 #include "balancer.h" 27 28 29 #define DEFAULT_HOSTS_ALLOCATION 5 27 #include "module_loader.h" 28 #include "server-protected.h" 29 #include "source_interpreter.h" 30 31 #define DEFAULT_SOURCES_ALLOCATION 5 30 32 31 33 … … 39 41 /* Virtual methods 40 42 */ 41 balancer->dispatch = NULL;42 43 /* Hosts44 */ 45 balancer-> hosts_len = 0;46 balancer-> hosts_size = 0;47 balancer-> hosts = NULL;43 balancer->dispatch = NULL; 44 45 /* Sources 46 */ 47 balancer->sources_len = 0; 48 balancer->sources_size = 0; 49 balancer->sources = NULL; 48 50 49 51 return ret_ok; … … 54 56 cherokee_balancer_mrproper (cherokee_balancer_t *balancer) 55 57 { 56 if (balancer->hosts != NULL) { 57 free (balancer->hosts); 58 } 58 if (balancer->sources != NULL) { 59 free (balancer->sources); 60 } 61 62 return ret_ok; 63 } 64 65 66 ret_t 67 cherokee_balancer_configure (cherokee_balancer_t *balancer, cherokee_config_node_t *conf) 68 { 69 ret_t ret; 70 cherokee_list_t *i; 71 cherokee_buffer_t *buf; 72 cherokee_boolean_t interpreter = false; 73 74 /* Look for the type of the source objects 75 */ 76 ret = cherokee_config_node_read (conf, "type", &buf); 77 if (ret != ret_ok) { 78 PRINT_ERROR_S ("ERROR: Balancer: An entry 'type' is needed\n"); 79 return ret; 80 } 81 82 if (equal_buf_str (buf, "interpreter")) { 83 interpreter = true; 84 } else { 85 PRINT_ERROR ("ERROR: Balancer: Unknown type '%s'\n", buf->buf); 86 return ret_error; 87 } 88 89 /* Add the source objects 90 */ 91 cherokee_config_node_foreach (i, conf) { 92 cherokee_source_t *src = NULL; 93 cherokee_config_node_t *subconf = CONFIG_NODE(i); 94 95 if (equal_buf_str (&subconf->key, "type")) 96 continue; 97 98 if (interpreter) { 99 cherokee_source_interpreter_t *src2; 100 101 ret = cherokee_source_interpreter_new (&src2); 102 if (ret != ret_ok) return ret; 103 104 ret = cherokee_source_interpreter_configure (src2, subconf); 105 if (ret != ret_ok) return ret; 106 107 src = SOURCE(src2); 108 } 109 110 cherokee_balancer_add_source (balancer, src); 111 } 59 112 60 113 return ret_ok; … … 63 116 64 117 static ret_t 65 alloc_more_ hosts (cherokee_balancer_t *balancer)118 alloc_more_sources (cherokee_balancer_t *balancer) 66 119 { 67 120 size_t size; 68 121 69 if (balancer-> hosts == NULL) {70 size = DEFAULT_ HOSTS_ALLOCATION * sizeof(cherokee_balancer_host_t *);71 balancer-> hosts = (cherokee_balancer_host_t **) malloc (size);122 if (balancer->sources == NULL) { 123 size = DEFAULT_SOURCES_ALLOCATION * sizeof(cherokee_source_t *); 124 balancer->sources = (cherokee_source_t **) malloc (size); 72 125 } else { 73 size = (balancer-> hosts_size + DEFAULT_HOSTS_ALLOCATION ) * sizeof(cherokee_balancer_host_t *);74 balancer-> hosts = (cherokee_balancer_host_t **) realloc (balancer->hosts, size);75 } 76 77 if (balancer-> hosts == NULL)126 size = (balancer->sources_size + DEFAULT_SOURCES_ALLOCATION ) * sizeof(cherokee_source_t *); 127 balancer->sources = (cherokee_source_t **) realloc (balancer->sources, size); 128 } 129 130 if (balancer->sources == NULL) 78 131 return ret_nomem; 79 132 80 memset (balancer-> hosts + balancer->hosts_len, 0, DEFAULT_HOSTS_ALLOCATION);81 82 balancer-> hosts_size += DEFAULT_HOSTS_ALLOCATION;83 return ret_ok; 84 } 85 86 87 ret_t 88 cherokee_balancer_add_ host (cherokee_balancer_t *balancer, cherokee_balancer_host_t *host)133 memset (balancer->sources + balancer->sources_len, 0, DEFAULT_SOURCES_ALLOCATION); 134 135 balancer->sources_size += DEFAULT_SOURCES_ALLOCATION; 136 return ret_ok; 137 } 138 139 140 ret_t 141 cherokee_balancer_add_source (cherokee_balancer_t *balancer, cherokee_source_t *source) 89 142 { 90 143 ret_t ret; 91 92 if (balancer-> hosts_len >= balancer->hosts_size) {93 ret = alloc_more_ hosts (balancer);144 145 if (balancer->sources_len >= balancer->sources_size) { 146 ret = alloc_more_sources (balancer); 94 147 if (ret != ret_ok) return ret; 95 148 } 96 149 97 balancer-> hosts[balancer->hosts_len] = host;98 balancer-> hosts_len++;99 100 return ret_ok; 101 } 102 103 104 ret_t 105 cherokee_balancer_dispatch (cherokee_balancer_t *balancer, cherokee_connection_t *conn, cherokee_ balancer_host_t **host)150 balancer->sources[balancer->sources_len] = source; 151 balancer->sources_len++; 152 153 return ret_ok; 154 } 155 156 157 ret_t 158 cherokee_balancer_dispatch (cherokee_balancer_t *balancer, cherokee_connection_t *conn, cherokee_source_t **source) 106 159 { 107 160 if (balancer->dispatch == NULL) 108 161 return ret_error; 109 162 110 return balancer->dispatch (balancer, conn, host);163 return balancer->dispatch (balancer, conn, source); 111 164 } 112 165 … … 136 189 return ret_ok; 137 190 } 191 192 193 ret_t 194 cherokee_balancer_instance (cherokee_buffer_t *name, 195 cherokee_config_node_t *conf, 196 cherokee_server_t *srv, 197 cherokee_balancer_t **balancer) 198 { 199 ret_t ret; 200 balancer_new_func_t new_func; 201 cherokee_module_info_t *info = NULL; 202 203 ret = cherokee_module_loader_get (&srv->loader, name->buf, &info); 204 if (ret != ret_ok) return ret; 205 206 new_func = (balancer_new_func_t) info->new_func; 207 ret = new_func (balancer); 208 if (ret != ret_ok) return ret; 209 210 ret = cherokee_balancer_configure (*balancer, conf); 211 if (ret != ret_ok) return ret; 212 213 return ret_ok; 214 } cherokee/trunk/cherokee/balancer.h
r380 r387 33 33 #include <cherokee/module.h> 34 34 #include <cherokee/connection.h> 35 #include <cherokee/source.h> 35 36 36 37 CHEROKEE_BEGIN_DECLS 37 38 38 39 /* Hosts 40 */ 41 typedef struct { 42 int foo; 43 } cherokee_balancer_host_t; 44 45 46 /* Handler properties 47 */ 48 typedef ret_t (* balancer_props_func_free_t) (void *balancerp); 39 typedef ret_t (* balancer_dispatch_func_t) (void *balancer, cherokee_connection_t *conn, cherokee_source_t **src); 49 40 50 41 typedef struct { 51 balancer_props_func_free_t free; 52 } cherokee_balancer_props_t; 53 54 55 /* Balancer 56 */ 57 typedef ret_t (* balancer_dispatch_func_t) (void *balancer, cherokee_connection_t *conn, cherokee_balancer_host_t **hosts); 58 typedef ret_t (* balancer_free_func_t) (void *balancer); 59 60 typedef struct { 61 cherokee_module_t module; 42 cherokee_module_t module; 62 43 63 44 /* Properties */ 64 cherokee_ balancer_host_t **hosts;65 cuint_t hosts_len;66 cuint_t hosts_size;45 cherokee_source_t **sources; 46 cuint_t sources_len; 47 cuint_t sources_size; 67 48 68 49 /* Virtual methods */ 69 balancer_dispatch_func_t dispatch; 50 balancer_dispatch_func_t dispatch; 51 70 52 } cherokee_balancer_t; 71 53 72 54 #define BAL(b) ((cherokee_balancer_t *)(b)) 73 55 56 57 typedef ret_t (* balancer_new_func_t) (cherokee_balancer_t **balancer); 58 typedef ret_t (* balancer_free_func_t) (cherokee_balancer_t *balancer); 59 60 74 61 ret_t cherokee_balancer_init_base (cherokee_balancer_t *balancer); 75 62 ret_t cherokee_balancer_mrproper (cherokee_balancer_t *balancer); 63 ret_t cherokee_balancer_configure (cherokee_balancer_t *balancer, cherokee_config_node_t *conf); 76 64 77 ret_t cherokee_balancer_add_host (cherokee_balancer_t *balancer, cherokee_balancer_host_t *host); 65 /* Public methods 66 */ 67 ret_t cherokee_balancer_add_source (cherokee_balancer_t *balancer, cherokee_source_t *source); 78 68 79 69 /* Virtual methods 80 70 */ 81 ret_t cherokee_balancer_dispatch (cherokee_balancer_t *balancer, cherokee_connection_t *conn, cherokee_ balancer_host_t **host);71 ret_t cherokee_balancer_dispatch (cherokee_balancer_t *balancer, cherokee_connection_t *conn, cherokee_source_t **source); 82 72 ret_t cherokee_balancer_free (cherokee_balancer_t *balancer); 73 74 /* Commodity 75 */ 76 ret_t cherokee_balancer_instance (cherokee_buffer_t *name, 77 cherokee_config_node_t *conf, 78 cherokee_server_t *srv, 79 cherokee_balancer_t **balancer); 83 80 84 81 CHEROKEE_END_DECLS cherokee/trunk/cherokee/balancer_round_robin.c
r380 r387 28 28 #include "module_loader.h" 29 29 30 static ret_t 31 dispatch (cherokee_balancer_round_robin_t *balancer, 32 cherokee_connection_t *conn, 33 cherokee_source_t **src); 34 30 35 31 36 ret_t 32 cherokee_balancer_round_robin_configure (cherokee_ config_node_t *conf, cherokee_server_t *srv, void **props)37 cherokee_balancer_round_robin_configure (cherokee_balancer_t *balancer, cherokee_config_node_t *conf) 33 38 { 39 ret_t ret; 40 41 ret = cherokee_balancer_configure (BAL(balancer), conf); 42 if (ret != ret_ok) return ret; 43 34 44 return ret_ok; 35 45 } 36 46 47 37 48 ret_t 38 cherokee_balancer_round_robin_new (cherokee_balancer_t **bal , cherokee_connection_t *cnt, cherokee_balancer_props_t *props)49 cherokee_balancer_round_robin_new (cherokee_balancer_t **bal) 39 50 { 40 51 CHEROKEE_NEW_STRUCT (n, balancer_round_robin); … … 45 56 46 57 MODULE(n)->free = (module_func_free_t) cherokee_balancer_round_robin_free; 47 BAL(n)->dispatch = (balancer_dispatch_func_t) cherokee_balancer_round_robin_dispatch;58 BAL(n)->dispatch = (balancer_dispatch_func_t) dispatch; 48 59 49 60 /* Init properties … … 67 78 68 79 69 ret_t70 cherokee_balancer_round_robin_dispatch (cherokee_balancer_round_robin_t *balancer,71 cherokee_connection_t *conn,72 cherokee_balancer_host_t **host)80 static ret_t 81 dispatch (cherokee_balancer_round_robin_t *balancer, 82 cherokee_connection_t *conn, 83 cherokee_source_t **src) 73 84 { 74 85 cherokee_balancer_t *gbal = BAL(balancer); … … 76 87 CHEROKEE_MUTEX_LOCK (&balancer->last_one_mutex); 77 88 78 if (gbal-> hosts_len <= 0)89 if (gbal->sources_len <= 0) 79 90 goto error; 80 91 81 balancer->last_one = (balancer->last_one + 1) % gbal-> hosts_len;82 * host = gbal->hosts[balancer->last_one];92 balancer->last_one = (balancer->last_one + 1) % gbal->sources_len; 93 *src = gbal->sources[balancer->last_one]; 83 94 84 95 CHEROKEE_MUTEX_UNLOCK (&balancer->last_one_mutex); … … 89 100 return ret_error; 90 101 } 102 91 103 92 104 cherokee/trunk/cherokee/balancer_round_robin.h
r380 r387 39 39 } cherokee_balancer_round_robin_t; 40 40 41 42 #define PROP_RR(x) ((cherokee_balancer_round_robin_props_t *)(x))43 41 #define BAL_RR(x) ((cherokee_balancer_round_robin_file_t *)(x)) 44 #define BAL_RR_PROP(x) (PROP_RR(BAL(x)->props))45 42 46 43 47 ret_t cherokee_balancer_round_robin_new (cherokee_balancer_t **hdl, cherokee_connection_t *cnt, cherokee_balancer_props_t *props); 48 ret_t cherokee_balancer_round_robin_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, void **props); 49 44 ret_t cherokee_balancer_round_robin_new (cherokee_balancer_t **balancer); 45 ret_t cherokee_balancer_round_robin_configure (cherokee_balancer_t *balancer, cherokee_config_node_t *conf); 50 46 ret_t cherokee_balancer_round_robin_free (cherokee_balancer_round_robin_t *balancer); 51 ret_t cherokee_balancer_round_robin_dispatch (cherokee_balancer_round_robin_t *balancer, cherokee_connection_t *conn, cherokee_balancer_host_t **host);52 53 47 54 48 #endif /* CHEROKEE_BALANCER_ROUND_ROBIN_H */ cherokee/trunk/cherokee/config_entry.c
r354 r387 76 76 { 77 77 if (entry->handler_properties != NULL) { 78 cherokee_ handler_props_free (entry->handler_properties);78 cherokee_module_props_free (entry->handler_properties); 79 79 entry->handler_properties = NULL; 80 80 } cherokee/trunk/cherokee/config_entry.h
r384 r387 40 40 /* Parent table_entry 41 41 */ 42 void *parent;43 cuint_t priority;42 void *parent; 43 cuint_t priority; 44 44 45 45 /* Properties 46 46 */ 47 cherokee_buffer_t *document_root;48 cherokee_boolean_t only_secure;49 void *access;47 cherokee_buffer_t *document_root; 48 cherokee_boolean_t only_secure; 49 void *access; 50 50 51 51 /* Handler … … 53 53 handler_func_new_t handler_new_func; 54 54 cherokee_http_method_t handler_methods; 55 cherokee_ handler_props_t*handler_properties;55 cherokee_module_props_t *handler_properties; 56 56 57 57 /* Validator cherokee/trunk/cherokee/fcgi_dispatcher.c
r385 r387 33 33 cherokee_fcgi_dispatcher_new (cherokee_fcgi_dispatcher_t **fcgi, 34 34 cherokee_thread_t *thd, 35 cherokee_ ext_source_t*src,35 cherokee_source_t *src, 36 36 cuint_t mgr_num, 37 37 cuint_t keepalive, cherokee/trunk/cherokee/fcgi_dispatcher.h
r384 r387 48 48 49 49 50 ret_t cherokee_fcgi_dispatcher_new (cherokee_fcgi_dispatcher_t **fcgi, cherokee_thread_t *thd, cherokee_ ext_source_t *src, cuint_t mgr_num, cuint_t nkeepalive, cuint_t pipeline);50 ret_t cherokee_fcgi_dispatcher_new (cherokee_fcgi_dispatcher_t **fcgi, cherokee_thread_t *thd, cherokee_source_t *src, cuint_t mgr_num, cuint_t nkeepalive, cuint_t pipeline); 51 51 ret_t cherokee_fcgi_dispatcher_free (cherokee_fcgi_dispatcher_t *fcgi); 52 52 cherokee/trunk/cherokee/fcgi_manager.c
r282 r387 29 29 #include "connection-protected.h" 30 30 #include "handler_fastcgi.h" 31 #include "source_interpreter.h" 31 32 32 33 #include <unistd.h> … … 40 41 cherokee_fcgi_manager_init (cherokee_fcgi_manager_t *mgr, 41 42 void *dispatcher, 42 cherokee_ ext_source_t*src,43 cherokee_source_t *src, 43 44 cherokee_boolean_t keepalive, 44 45 cuint_t pipeline) … … 132 133 reconnect (cherokee_fcgi_manager_t *mgr, cherokee_thread_t *thd, cherokee_boolean_t clean_up) 133 134 { 134 ret_t ret;135 cuint_t next;136 cuint_t try = 0;137 cherokee_ ext_source_t *src = mgr->source;135 ret_t ret; 136 cuint_t next; 137 cuint_t try = 0; 138 cherokee_source_t *src = mgr->source; 138 139 139 140 /* Do some clean up … … 159 160 /* If it connects we're done here.. 160 161 */ 161 ret = cherokee_ ext_source_connect (src, &mgr->socket);162 ret = cherokee_source_connect (src, &mgr->socket); 162 163 if (ret != ret_ok) { 164 cherokee_source_interpreter_t *src2 = SOURCE_INT(src); 165 163 166 /* It didn't sucess to connect, so lets spawn a new server 164 167 */ 165 ret = cherokee_ ext_source_spawn_srv (src);168 ret = cherokee_source_interpreter_spawn (src2); 166 169 if (ret != ret_ok) { 167 170 TRACE (ENTRIES, "Couldn't spawn: %s\n", src->host.buf ? src->host.buf : src->unix_socket.buf); … … 172 175 /* Try to connect again 173 176 */ 174 ret = cherokee_ ext_source_connect (src, &mgr->socket);177 ret = cherokee_source_connect (src, &mgr->socket); 175 178 if (ret == ret_ok) break; 176 179 cherokee/trunk/cherokee/fcgi_manager.h
r203 r387 30 30 #include "socket.h" 31 31 #include "thread.h" 32 #include " ext_source.h"32 #include "source.h" 33 33 34 34 … … 41 41 cherokee_socket_t socket; 42 42 cherokee_buffer_t read_buffer; 43 cherokee_ ext_source_t*source;43 cherokee_source_t *source; 44 44 void *dispatcher; 45 45 … … 59 59 #define FCGI_MANAGER(f) ((cherokee_fcgi_manager_t *)(f)) 60 60 61 ret_t cherokee_fcgi_manager_init (cherokee_fcgi_manager_t *mgr, void *dispatcher, cherokee_ ext_source_t *src, cherokee_boolean_t keepalive, cuint_t pipeline);61 ret_t cherokee_fcgi_manager_init (cherokee_fcgi_manager_t *mgr, void *dispatcher, cherokee_source_t *src, cherokee_boolean_t keepalive, cuint_t pipeline); 62 62 ret_t cherokee_fcgi_manager_mrproper (cherokee_fcgi_manager_t *mgr); 63 63 cherokee/trunk/cherokee/handler.c
r370 r387 33 33 34 34 ret_t 35 cherokee_handler_init_base (cherokee_handler_t *hdl, void *conn, cherokee_ handler_props_t *props)35 cherokee_handler_init_base (cherokee_handler_t *hdl, void *conn, cherokee_module_props_t *props) 36 36 { 37 37 /* Init the base class … … 130 130 131 131 132 /* Handler properties133 */134 ret_t135 cherokee_handler_props_init_base (cherokee_handler_props_t *hdlp, handler_props_func_free_t free_func)136 {137 hdlp->free = free_func;138 return ret_ok;139 }140 141 142 ret_t143 cherokee_handler_props_free (cherokee_handler_props_t *hdlp)144 {145 if (hdlp == NULL)146 return ret_error;147 148 if (hdlp->free == NULL) {149 SHOULDNT_HAPPEN;150 return ret_error;151 }152 153 hdlp->free (hdlp);154 return ret_ok;155 }156 157 158 ret_t159 cherokee_handler_props_free_base (cherokee_handler_props_t *hdlp)160 {161 free (hdlp);162 return ret_ok;163 }cherokee/trunk/cherokee/handler.h
r379 r387 55 55 } cherokee_handler_support_t; 56 56 57 /* Handler properties58 */59 typedef ret_t (* handler_props_func_free_t) (void *handlerp);60 61 typedef struct {62 handler_props_func_free_t free;63 } cherokee_handler_props_t;64 65 57 66 58 /* Callback function definitions 67 59 */ 68 typedef ret_t (* handler_func_new_t) (void **handler, void *cnt, cherokee_ handler_props_t *properties);60 typedef ret_t (* handler_func_new_t) (void **handler, void *cnt, cherokee_module_props_t *properties); 69 61 typedef ret_t (* handler_func_init_t) (void *handler); 70 62 typedef ret_t (* handler_func_step_t) (void *handler, cherokee_buffer_t *buffer); … … 75 67 typedef struct { 76 68 cherokee_module_t module; 77 cherokee_ handler_props_t*props;69 cherokee_module_props_t *props; 78 70 79 71 /* Pure virtual methods … … 90 82 91 83 #define HANDLER(x) ((cherokee_handler_t *)(x)) 92 #define HANDLER_PROPS(x) ((cherokee_handler_props_t *)(x))93 #define HANDLER_PROPS_FREE(f) ((handler_props_func_free_t)(f))94 95 84 #define HANDLER_CONN(h) (CONN(HANDLER(h)->connection)) 96 85 #define HANDLER_SRV(h) (CONN_SRV(HANDLER_CONN(h))) … … 104 93 /* Handler methods 105 94 */ 106 ret_t cherokee_handler_init_base (cherokee_handler_t *hdl, void *conn, cherokee_ handler_props_t *props);95 ret_t cherokee_handler_init_base (cherokee_handler_t *hdl, void *conn, cherokee_module_props_t *props); 107 96 ret_t cherokee_handler_free_base (cherokee_handler_t *hdl); 108 97 … … 114 103 ret_t cherokee_handler_add_headers (cherokee_handler_t *hdl, cherokee_buffer_t *buffer); 115 104 116 /* Handler properties117 */118 ret_t cherokee_handler_props_init_base (cherokee_handler_props_t *hdlp, handler_props_func_free_t free_func);119 ret_t cherokee_handler_props_free_base (cherokee_handler_props_t *hdlp);120 ret_t cherokee_handler_props_free (cherokee_handler_props_t *hdlp);121 122 105 123 106 CHEROKEE_END_DECLS cherokee/trunk/cherokee/handler_admin.c
r342 r387 43 43 44 44 ret_t 45 cherokee_handler_admin_new (cherokee_handler_t **hdl, void *cnt, cherokee_ handler_props_t *props)45 cherokee_handler_admin_new (cherokee_handler_t **hdl, void *cnt, cherokee_module_props_t *props) 46 46 { 47 47 CHEROKEE_NEW_STRUCT (n, handler_admin); cherokee/trunk/cherokee/handler_admin.h
r282 r387 48 48 */ 49 49 void MODULE_INIT(admi) (cherokee_module_loader_t *loader); 50 ret_t cherokee_handler_admin_new (cherokee_handler_t **hdl, void *cnt, cherokee_ handler_props_t *props);50 ret_t cherokee_handler_admin_new (cherokee_handler_t **hdl, void *cnt, cherokee_module_props_t *props); 51 51 52 52 /* virtual methods implementation cherokee/trunk/cherokee/handler_cgi.c
r384 r387 108 108 109 109 ret_t 110 cherokee_handler_cgi_new (cherokee_handler_t **hdl, void *cnt, cherokee_ handler_props_t *props)110 cherokee_handler_cgi_new (cherokee_handler_t **hdl, void *cnt, cherokee_module_props_t *props) 111 111 { 112 112 int i; … … 259 259 260 260 ret_t 261 cherokee_handler_cgi_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_ handler_props_t **_props)261 cherokee_handler_cgi_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_module_props_t **_props) 262 262 { 263 263 cherokee_handler_cgi_props_t *props; … … 268 268 CHEROKEE_NEW_STRUCT (n, handler_cgi_props); 269 269 270 cherokee_ handler_props_init_base (HANDLER_PROPS(n),271 HANDLER_PROPS_FREE(cherokee_handler_cgi_props_free));272 *_props = HANDLER_PROPS(n);270 cherokee_module_props_init_base (MODULE_PROPS(n), 271 MODULE_PROPS_FREE(cherokee_handler_cgi_props_free)); 272 *_props = MODULE_PROPS(n); 273 273 } 274 274 cherokee/trunk/cherokee/handler_cgi.h
r283 r387 74 74 /* Methods 75 75 */ 76 ret_t cherokee_handler_cgi_new (cherokee_handler_t **hdl, void *cnt, cherokee_ handler_props_t *props);76 ret_t cherokee_handler_cgi_new (cherokee_handler_t **hdl, void *cnt, cherokee_module_props_t *props); 77 77 ret_t cherokee_handler_cgi_free (cherokee_handler_cgi_t *hdl); 78 78 … … 89 89 char *content, int content_len); 90 90 91 ret_t cherokee_handler_cgi_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_ handler_props_t **props);91 ret_t cherokee_handler_cgi_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_module_props_t **props); 92 92 ret_t cherokee_handler_cgi_props_free (cherokee_handler_cgi_props_t *props); 93 93 cherokee/trunk/cherokee/handler_cgi_base.c
r385 r387 43 43 cherokee_handler_cgi_base_init (cherokee_handler_cgi_base_t *cgi, 44 44 cherokee_connection_t *conn, 45 cherokee_ handler_props_t*props,45 cherokee_module_props_t *props, 46 46 cherokee_handler_cgi_base_add_env_pair_t add_env_pair, 47 47 cherokee_handler_cgi_base_read_from_cgi_t read_from_cgi) … … 134 134 } 135 135 136 return cherokee_ handler_props_free_base (HANDLER_PROPS(props));136 return cherokee_module_props_free_base (MODULE_PROPS(props)); 137 137 } 138 138 139 139 ret_t 140 cherokee_handler_cgi_base_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_ handler_props_t **_props)140 cherokee_handler_cgi_base_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_module_props_t **_props) 141 141 { 142 142 ret_t ret; cherokee/trunk/cherokee/handler_cgi_base.h
r384 r387 50 50 51 51 typedef struct { 52 cherokee_ handler_props_tbase;52 cherokee_module_props_t base; 53 53 cherokee_list_t system_env; 54 54 cuint_t change_user; … … 84 84 ret_t cherokee_handler_cgi_base_init (cherokee_handler_cgi_base_t *hdl, 85 85 cherokee_connection_t *conn, 86 cherokee_ handler_props_t*props,86 cherokee_module_props_t *props, 87 87 cherokee_handler_cgi_base_add_env_pair_t add_env_pair, 88 88 cherokee_handler_cgi_base_read_from_cgi_t read_from_cgi); … … 107 107 cherokee_buffer_t *tmp); 108 108 109 ret_t cherokee_handler_cgi_base_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_ handler_props_t **props);109 ret_t cherokee_handler_cgi_base_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_module_props_t **props); 110 110 ret_t cherokee_handler_cgi_base_props_free (cherokee_handler_cgi_base_props_t *props); 111 111 cherokee/trunk/cherokee/handler_common.c
r384 r387 66 66 } 67 67 68 return cherokee_ handler_props_free_base (HANDLER_PROPS(props));68 return cherokee_module_props_free_base (MODULE_PROPS(props)); 69 69 } 70 70 71 71 72 72 ret_t 73 cherokee_handler_common_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_ handler_props_t **_props)73 cherokee_handler_common_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_module_props_t **_props) 74 74 { 75 75 ret_t ret; … … 79 79 CHEROKEE_NEW_STRUCT (n, handler_common_props); 80 80 81 cherokee_ handler_props_init_base (HANDLER_PROPS(n),82 HANDLER_PROPS_FREE(cherokee_handler_common_props_free));81 cherokee_module_props_init_base (MODULE_PROPS(n), 82 &nb