1 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
5 * Copyright (C) 2001-2009, Eduardo Silva P. <edsiper@gmail.com>
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Library General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
37 void *mk_mem_malloc(size_t size
)
41 if ((aux
= malloc(size
)) == NULL
) {
49 extern void *mk_mem_malloc_z(size_t size
)
53 buf
= mk_mem_malloc(size
);
63 void *mk_mem_realloc(void *ptr
, size_t size
)
67 if ((aux
= realloc(ptr
, size
)) == NULL
) {
75 void mk_mem_free(void *ptr
)
80 mk_pointer
mk_pointer_create(char *buf
, long init
, long end
)
97 void mk_pointer_reset(mk_pointer
* p
)
103 void mk_pointer_free(mk_pointer
* p
)
105 mk_mem_free(p
->data
);
109 char *mk_pointer_to_buf(mk_pointer p
)
113 buf
= strndup(p
.data
, p
.len
);
117 void mk_pointer_print(mk_pointer p
)
121 printf("\nDEBUG MK_POINTER: '");
122 for (i
= 0; i
< p
.len
&& p
.data
!= NULL
; i
++) {
123 printf("%c", p
.data
[i
]);
129 void mk_pointer_set(mk_pointer
* p
, char *data
)
132 p
->len
= strlen(data
);
135 void mk_mem_pointers_init()
138 mk_pointer_set(&request_error_msg_400
, ERROR_MSG_400
);
139 mk_pointer_set(&request_error_msg_403
, ERROR_MSG_403
);
140 mk_pointer_set(&request_error_msg_404
, ERROR_MSG_404
);
141 mk_pointer_set(&request_error_msg_405
, ERROR_MSG_405
);
142 mk_pointer_set(&request_error_msg_408
, ERROR_MSG_408
);
143 mk_pointer_set(&request_error_msg_411
, ERROR_MSG_411
);
144 mk_pointer_set(&request_error_msg_500
, ERROR_MSG_500
);
145 mk_pointer_set(&request_error_msg_501
, ERROR_MSG_501
);
146 mk_pointer_set(&request_error_msg_505
, ERROR_MSG_505
);
148 /* Short server response headers */
149 mk_pointer_set(&mk_header_short_date
, MK_HEADER_SHORT_DATE
);
150 mk_pointer_set(&mk_header_short_location
, MK_HEADER_SHORT_LOCATION
);
151 mk_pointer_set(&mk_header_short_ct
, MK_HEADER_SHORT_CT
);
154 mk_pointer_set(&mk_crlf
, MK_CRLF
);
155 mk_pointer_set(&mk_endblock
, MK_ENDBLOCK
);
158 mk_pointer_set(&mk_rh_accept
, RH_ACCEPT
);
159 mk_pointer_set(&mk_rh_accept_charset
, RH_ACCEPT_CHARSET
);
160 mk_pointer_set(&mk_rh_accept_encoding
, RH_ACCEPT_ENCODING
);
161 mk_pointer_set(&mk_rh_accept_language
, RH_ACCEPT_LANGUAGE
);
162 mk_pointer_set(&mk_rh_connection
, RH_CONNECTION
);
163 mk_pointer_set(&mk_rh_cookie
, RH_COOKIE
);
164 mk_pointer_set(&mk_rh_content_length
, RH_CONTENT_LENGTH
);
165 mk_pointer_set(&mk_rh_content_range
, RH_CONTENT_RANGE
);
166 mk_pointer_set(&mk_rh_content_type
, RH_CONTENT_TYPE
);
167 mk_pointer_set(&mk_rh_if_modified_since
, RH_IF_MODIFIED_SINCE
);
168 mk_pointer_set(&mk_rh_host
, RH_HOST
);
169 mk_pointer_set(&mk_rh_last_modified
, RH_LAST_MODIFIED
);
170 mk_pointer_set(&mk_rh_last_modified_since
, RH_LAST_MODIFIED_SINCE
);
171 mk_pointer_set(&mk_rh_referer
, RH_REFERER
);
172 mk_pointer_set(&mk_rh_range
, RH_RANGE
);
173 mk_pointer_set(&mk_rh_user_agent
, RH_USER_AGENT
);
175 /* Server response first header */
176 mk_pointer_set(&mk_hr_http_ok
, MK_HR_HTTP_OK
);
177 mk_pointer_set(&mk_hr_http_partial
, MK_HR_HTTP_PARTIAL
);
178 mk_pointer_set(&mk_hr_redir_moved
, MK_HR_REDIR_MOVED
);
179 mk_pointer_set(&mk_hr_redir_moved_t
, MK_HR_REDIR_MOVED_T
);
180 mk_pointer_set(&mk_hr_not_modified
, MK_HR_NOT_MODIFIED
);
181 mk_pointer_set(&mk_hr_client_bad_request
, MK_HR_CLIENT_BAD_REQUEST
);
182 mk_pointer_set(&mk_hr_client_forbidden
, MK_HR_CLIENT_FORBIDDEN
);
183 mk_pointer_set(&mk_hr_client_not_found
, MK_HR_CLIENT_NOT_FOUND
);
184 mk_pointer_set(&mk_hr_client_method_not_allowed
,
185 MK_HR_CLIENT_METHOD_NOT_ALLOWED
);
186 mk_pointer_set(&mk_hr_client_request_timeout
,
187 MK_HR_CLIENT_REQUEST_TIMEOUT
);
188 mk_pointer_set(&mk_hr_client_length_required
,
189 MK_HR_CLIENT_LENGTH_REQUIRED
);
190 mk_pointer_set(&mk_hr_server_internal_error
, MK_HR_SERVER_INTERNAL_ERROR
);
191 mk_pointer_set(&mk_hr_server_not_implemented
,
192 MK_HR_SERVER_NOT_IMPLEMENTED
);
193 mk_pointer_set(&mk_hr_server_http_version_unsup
,
194 MK_HR_SERVER_HTTP_VERSION_UNSUP
);
196 /* Server response normal headers */
197 mk_pointer_set(&mk_header_conn_ka
, MK_HEADER_CONN_KA
);
198 mk_pointer_set(&mk_header_conn_close
, MK_HEADER_CONN_CLOSE
);
199 mk_pointer_set(&mk_header_content_length
, MK_HEADER_CONTENT_LENGTH
);
200 mk_pointer_set(&mk_header_accept_ranges
, MK_HEADER_ACCEPT_RANGES
);
201 mk_pointer_set(&mk_header_te_chunked
, MK_HEADER_TE_CHUNKED
);
202 mk_pointer_set(&mk_header_last_modified
, MK_HEADER_LAST_MODIFIED
);
204 mk_http_status_list_init();
205 mk_iov_separators_init();
208 mk_pointer_set(&mk_monkey_protocol
, HTTP_PROTOCOL_11_STR
);
209 // mk_pointer_set(&mk_monkey_port, config->port);
212 mk_pointer_set(&mk_logfile_iov_dash
, MK_LOGFILE_IOV_DASH
);
215 mk_pointer_set(&mk_http_method_get_p
, HTTP_METHOD_GET_STR
);
216 mk_pointer_set(&mk_http_method_post_p
, HTTP_METHOD_POST_STR
);
217 mk_pointer_set(&mk_http_method_head_p
, HTTP_METHOD_HEAD_STR
);
218 mk_pointer_reset(&mk_http_method_null_p
);
220 mk_pointer_set(&mk_http_protocol_09_p
, HTTP_PROTOCOL_09_STR
);
221 mk_pointer_set(&mk_http_protocol_10_p
, HTTP_PROTOCOL_10_STR
);
222 mk_pointer_set(&mk_http_protocol_11_p
, HTTP_PROTOCOL_11_STR
);
223 mk_pointer_reset(&mk_http_protocol_null_p
);
226 mk_pointer_set(&mk_user_home
, MK_USER_HOME
);