Browse Source

[Rework] Move http internal structures to a private header

tags/1.3.0
Vsevolod Stakhov 8 years ago
parent
commit
a3efc28481
3 changed files with 80 additions and 54 deletions
  1. 1
    1
      src/libutil/http.c
  2. 6
    53
      src/libutil/http.h
  3. 73
    0
      src/libutil/http_private.h

+ 1
- 1
src/libutil/http.c View File

@@ -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"

+ 6
- 53
src/libutil/http.h View File

@@ -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,

+ 73
- 0
src/libutil/http_private.h View File

@@ -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_ */

Loading…
Cancel
Save