Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
varnishevent
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
uplex-varnish
varnishevent
Commits
53b98814
Commit
53b98814
authored
Mar 31, 2015
by
Geoff Simmons
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
implement and test formatters for %H conversion
parent
964a9b46
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
64 additions
and
16 deletions
+64
-16
format.c
src/format.c
+19
-16
format.h
src/format.h
+6
-0
test_format.c
src/test/test_format.c
+39
-0
No files found.
src/format.c
View file @
53b98814
...
...
@@ -41,8 +41,8 @@
#include "varnishevent.h"
#include "format.h"
typedef
void
formatter_f
(
logline_t
*
ll
,
char
*
name
,
enum
VSL_tag_e
tag
,
char
**
s
,
size_t
*
len
);
typedef
void
formatter_f
(
tx_t
*
tx
,
char
*
name
,
enum
VSL_tag_e
tag
,
char
**
s
,
size_t
*
len
);
typedef
struct
arg_t
{
char
*
name
;
...
...
@@ -196,19 +196,25 @@ get_tm(tx_t *tx)
return
epocht
;
}
#if 0
#define FORMAT(dir, ltr, slt) \
static void \
format_##ltr##_##dir(logline_t *ll, char *name, enum VSL_tag_e tag, \
char **s, size_t *len) \
{ \
(void) name; \
(void) tag; \
if (TAG(ll,SLT_##slt).len) \
RETURN_REC(TAG(ll,SLT_##slt), s, len); \
#define FORMAT(dir, ltr, slt) \
void \
format_##ltr##_##dir(tx_t *tx, char *name, enum VSL_tag_e tag, char **s, \
size_t *len) \
{ \
(void) name; \
(void) tag; \
\
logline_t *rec = get_tag(tx, SLT_##slt); \
get_payload(rec); \
*s = VSB_data(payload); \
*len = VSB_len(payload); \
}
FORMAT
(
client
,
H
,
ReqProtocol
)
FORMAT
(
backend
,
H
,
BereqProtocol
)
#if 0
#define FORMAT_b(dir, hx) \
static void \
format_b_##dir(logline_t *ll, char *name, enum VSL_tag_e tag, \
...
...
@@ -226,9 +232,6 @@ format_b_##dir(logline_t *ll, char *name, enum VSL_tag_e tag, \
FORMAT_b(client, tx)
FORMAT_b(backend, rx)
FORMAT(client, H, RxProtocol)
FORMAT(backend, H, TxProtocol)
static void
format_h_client(logline_t *ll, char *name, enum VSL_tag_e tag,
char **s, size_t *len)
...
...
src/format.h
View file @
53b98814
...
...
@@ -38,9 +38,15 @@ struct vsb *payload;
#define TS_START_REGEX "^\\s*Start\\s*:\\s*(.+)$"
vre_t
*
time_start_re
;
typedef
void
formatter_f
(
tx_t
*
tx
,
char
*
name
,
enum
VSL_tag_e
tag
,
char
**
s
,
size_t
*
len
);
void
get_payload
(
logline_t
*
rec
);
logline_t
*
get_tag
(
tx_t
*
tx
,
enum
VSL_tag_e
tag
);
char
*
get_hdr
(
tx_t
*
tx
,
enum
VSL_tag_e
tag
,
vre_t
*
hdr_re
);
char
*
get_fld
(
const
char
*
str
,
int
n
);
char
*
get_rec_fld
(
logline_t
*
rec
,
int
n
);
double
get_tm
(
tx_t
*
tx
);
formatter_f
format_H_client
;
formatter_f
format_H_backend
;
src/test/test_format.c
View file @
53b98814
...
...
@@ -345,6 +345,44 @@ static const char
return
NULL
;
}
static
const
char
*
test_format_H
(
void
)
{
tx_t
tx
;
logline_t
rec
;
chunk_t
chunk
;
char
*
str
;
size_t
len
;
printf
(
"... testing format_H_*()
\n
"
);
tx
.
magic
=
TX_MAGIC
;
tx
.
t
=
TX_TIME
;
VSTAILQ_INIT
(
&
tx
.
lines
);
VSTAILQ_INSERT_TAIL
(
&
tx
.
lines
,
&
rec
,
linelist
);
rec
.
magic
=
LOGLINE_MAGIC
;
VSTAILQ_INIT
(
&
rec
.
chunks
);
VSTAILQ_INSERT_TAIL
(
&
rec
.
chunks
,
&
chunk
,
chunklist
);
chunk
.
magic
=
CHUNK_MAGIC
;
chunk
.
data
=
(
char
*
)
calloc
(
1
,
config
.
chunk_size
);
MAN
(
chunk
.
data
);
rec
.
len
=
strlen
(
"HTTP/1.1"
);
rec
.
tag
=
SLT_ReqProtocol
;
strcpy
(
chunk
.
data
,
"HTTP/1.1"
);
VSTAILQ_INSERT_TAIL
(
&
rec
.
chunks
,
&
chunk
,
chunklist
);
format_H_client
(
&
tx
,
NULL
,
SLT__Bogus
,
&
str
,
&
len
);
MASSERT
(
strcmp
(
str
,
"HTTP/1.1"
)
==
0
);
MASSERT
(
len
==
strlen
(
"HTTP/1.1"
));
rec
.
tag
=
SLT_BereqProtocol
;
format_H_backend
(
&
tx
,
NULL
,
SLT__Bogus
,
&
str
,
&
len
);
MASSERT
(
strcmp
(
str
,
"HTTP/1.1"
)
==
0
);
MASSERT
(
len
==
strlen
(
"HTTP/1.1"
));
return
NULL
;
}
static
const
char
*
all_tests
(
void
)
{
...
...
@@ -355,6 +393,7 @@ static const char
mu_run_test
(
test_format_get_fld
);
mu_run_test
(
test_format_get_rec_fld
);
mu_run_test
(
test_format_get_tm
);
mu_run_test
(
test_format_H
);
return
NULL
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment