From a3efc2848155f4764bfa7ef70db13c5000d5ca6a Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Fri, 10 Jun 2016 14:46:44 +0100 Subject: [PATCH] [Rework] Move http internal structures to a private header --- src/libutil/http.c | 2 +- src/libutil/http.h | 59 ++++-------------------------- src/libutil/http_private.h | 73 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 80 insertions(+), 54 deletions(-) create mode 100644 src/libutil/http_private.h diff --git a/src/libutil/http.c b/src/libutil/http.c index 2e9fa259a..718ef818d 100644 --- a/src/libutil/http.c +++ b/src/libutil/http.c @@ -14,7 +14,7 @@ * limitations under the License. */ #include "config.h" -#include "http.h" +#include "http_private.h" #include "utlist.h" #include "util.h" #include "printf.h" diff --git a/src/libutil/http.h b/src/libutil/http.h index 59567b10a..bb5f8d8a7 100644 --- a/src/libutil/http.h +++ b/src/libutil/http.h @@ -28,22 +28,18 @@ #include "keypair.h" #include "keypairs_cache.h" #include "fstring.h" -#include "uthash.h" enum rspamd_http_connection_type { RSPAMD_HTTP_SERVER, RSPAMD_HTTP_CLIENT }; -/** - * HTTP header structure - */ -struct rspamd_http_header { - rspamd_ftok_t *name; - rspamd_ftok_t *value; - rspamd_fstring_t *combined; - UT_hash_handle hh; -}; +struct rspamd_http_header; +struct rspamd_http_message; +struct rspamd_http_connection_private; +struct rspamd_http_connection; +struct rspamd_http_connection_router; +struct rspamd_http_connection_entry; /** * Legacy spamc protocol @@ -58,44 +54,6 @@ struct rspamd_http_header { */ #define RSPAMD_HTTP_FLAG_SHMEM_IMMUTABLE (1 << 3) -/** - * HTTP message structure, used for requests and replies - */ -struct rspamd_http_message { - rspamd_fstring_t *url; - rspamd_fstring_t *host; - rspamd_fstring_t *status; - struct rspamd_http_header *headers; - - struct _rspamd_body_buf_s { - /* Data start */ - const gchar *begin; - /* Data len */ - gsize len; - /* Data buffer (used to write data inside) */ - gchar *str; - - /* Internal storage */ - union _rspamd_storage_u { - rspamd_fstring_t *normal; - struct { - gchar *shm_name; - gint shm_fd; - } shared; - } c; - } body_buf; - - struct rspamd_cryptobox_pubkey *peer_key; - time_t date; - time_t last_modified; - unsigned port; - enum http_parser_type type; - gint code; - enum http_method method; - gint flags; -}; - - /** * Options for HTTP connection */ @@ -105,11 +63,6 @@ enum rspamd_http_options { RSPAMD_HTTP_CLIENT_ENCRYPTED = 0x4 /**< Encrypt data for client */ }; -struct rspamd_http_connection_private; -struct rspamd_http_connection; -struct rspamd_http_connection_router; -struct rspamd_http_connection_entry; - typedef int (*rspamd_http_body_handler_t) (struct rspamd_http_connection *conn, struct rspamd_http_message *msg, const gchar *chunk, diff --git a/src/libutil/http_private.h b/src/libutil/http_private.h new file mode 100644 index 000000000..a944cb31b --- /dev/null +++ b/src/libutil/http_private.h @@ -0,0 +1,73 @@ +/*- + * Copyright 2016 Vsevolod Stakhov + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef SRC_LIBUTIL_HTTP_PRIVATE_H_ +#define SRC_LIBUTIL_HTTP_PRIVATE_H_ + +#include "http.h" +#include "str_util.h" +#include "../../contrib/mumhash/mum.h" +#define HASH_CASELESS +#include "uthash_strcase.h" + +/** + * HTTP header structure + */ +struct rspamd_http_header { + rspamd_ftok_t *name; + rspamd_ftok_t *value; + rspamd_fstring_t *combined; + UT_hash_handle hh; +}; + +/** + * HTTP message structure, used for requests and replies + */ +struct rspamd_http_message { + rspamd_fstring_t *url; + rspamd_fstring_t *host; + rspamd_fstring_t *status; + struct rspamd_http_header *headers; + + struct _rspamd_body_buf_s { + /* Data start */ + const gchar *begin; + /* Data len */ + gsize len; + /* Data buffer (used to write data inside) */ + gchar *str; + + /* Internal storage */ + union _rspamd_storage_u { + rspamd_fstring_t *normal; + struct { + gchar *shm_name; + gint shm_fd; + } shared; + } c; + } body_buf; + + struct rspamd_cryptobox_pubkey *peer_key; + time_t date; + time_t last_modified; + unsigned port; + enum http_parser_type type; + gint code; + enum http_method method; + gint flags; +}; + + +#endif /* SRC_LIBUTIL_HTTP_PRIVATE_H_ */ -- 2.39.5