Add caching for transformations. See #14.

This commit is contained in:
brectanus
2007-05-25 21:14:59 +00:00
parent 61238ca22f
commit 6cc0173cfa
4 changed files with 144 additions and 1 deletions

View File

@@ -25,6 +25,7 @@ typedef struct msc_engine msc_engine;
typedef struct msc_data_chunk msc_data_chunk;
typedef struct msc_arg msc_arg;
typedef struct msc_string msc_string;
typedef struct msc_cache_rec msc_cache_rec;
#if !(defined(WIN32) || defined(NETWARE) || defined(SOLARIS2))
#define DSOLOCAL __attribute__((visibility("hidden")))
@@ -45,6 +46,7 @@ typedef struct msc_string msc_string;
#include "ap_config.h"
#include "apr_md5.h"
#include "apr_strings.h"
#include "apr_hash.h"
#include "httpd.h"
#include "http_config.h"
#include "http_log.h"
@@ -59,6 +61,8 @@ typedef struct msc_string msc_string;
#define PHASE_RESPONSE_HEADERS 3
#define PHASE_RESPONSE_BODY 4
#define PHASE_LOGGING 5
#define PHASE_FIRST PHASE_REQUEST_HEADERS
#define PHASE_LAST PHASE_LOGGING
#define NOT_SET -1
#define NOT_SET_P (void *)-1
@@ -319,6 +323,9 @@ struct modsec_rec {
apr_off_t content_prepend_len;
const char *content_append;
apr_off_t content_append_len;
/* data cache */
apr_hash_t *tcache;
};
struct directory_config {
@@ -495,4 +502,14 @@ void DSOLOCAL msc_alert(modsec_rec *msr, int level, msre_actionset *actionset, c
apr_status_t DSOLOCAL modsecurity_request_body_clear(modsec_rec *msr);
/* Data Cache */
struct msc_cache_rec {
int hits;
int changed;
const char *key;
const char *val;
apr_size_t val_len;
};
#endif