Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
U
unique-xids
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
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
unique-xids
Commits
56ce6e35
Commit
56ce6e35
authored
Jun 18, 2012
by
Poul-Henning Kamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More VRT sp->req work
parent
b4d76fea
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
56 additions
and
53 deletions
+56
-53
cache_vrt.c
bin/varnishd/cache/cache_vrt.c
+36
-33
vrt.h
include/vrt.h
+9
-9
vcc_action.c
lib/libvcl/vcc_action.c
+2
-2
vcc_expr.c
lib/libvcl/vcc_expr.c
+9
-9
No files found.
bin/varnishd/cache/cache_vrt.c
View file @
56ce6e35
...
...
@@ -54,17 +54,16 @@ const void * const vrt_magic_string_end = &vrt_magic_string_end;
/*--------------------------------------------------------------------*/
void
VRT_error
(
const
struct
sess
*
sp
,
unsigned
code
,
const
char
*
reason
)
VRT_error
(
struct
req
*
req
,
unsigned
code
,
const
char
*
reason
)
{
CHECK_OBJ_NOTNULL
(
sp
,
SESS
_MAGIC
);
VSLb
(
sp
->
req
->
vsl
,
SLT_Debug
,
"VCL_error(%u, %s)"
,
code
,
reason
?
reason
:
"(null)"
);
CHECK_OBJ_NOTNULL
(
req
,
REQ
_MAGIC
);
VSLb
(
req
->
vsl
,
SLT_Debug
,
"VCL_error(%u, %s)"
,
code
,
reason
?
reason
:
"(null)"
);
if
(
code
<
100
||
code
>
999
)
code
=
503
;
sp
->
req
->
err_code
=
(
uint16_t
)
code
;
sp
->
req
->
err_reason
=
reason
?
reason
:
http_StatusMessage
(
sp
->
req
->
err_code
);
req
->
err_code
=
(
uint16_t
)
code
;
req
->
err_reason
=
reason
?
reason
:
http_StatusMessage
(
req
->
err_code
);
}
/*--------------------------------------------------------------------*/
...
...
@@ -196,18 +195,18 @@ VRT_String(struct ws *ws, const char *h, const char *p, va_list ap)
}
/*--------------------------------------------------------------------
* Build a string on the
worker threads
workspace
* Build a string on the
request
workspace
*/
const
char
*
VRT_
WrkString
(
const
struct
sess
*
sp
,
const
char
*
p
,
...)
VRT_
ReqString
(
struct
req
*
req
,
const
char
*
p
,
...)
{
va_list
ap
;
char
*
b
;
CHECK_OBJ_NOTNULL
(
sp
,
SESS
_MAGIC
);
CHECK_OBJ_NOTNULL
(
req
,
REQ
_MAGIC
);
va_start
(
ap
,
p
);
b
=
VRT_String
(
sp
->
wrk
->
a
ws
,
NULL
,
p
,
ap
);
b
=
VRT_String
(
req
->
ws
,
NULL
,
p
,
ap
);
va_end
(
ap
);
return
(
b
);
}
...
...
@@ -287,7 +286,7 @@ VRT_r_now(const struct req *req)
/*--------------------------------------------------------------------*/
char
*
VRT_IP_string
(
const
struct
sess
*
sp
,
const
struct
sockaddr_storage
*
sa
)
VRT_IP_string
(
struct
req
*
req
,
const
struct
sockaddr_storage
*
sa
)
{
char
*
p
;
const
struct
sockaddr_in
*
si4
;
...
...
@@ -295,6 +294,7 @@ VRT_IP_string(const struct sess *sp, const struct sockaddr_storage *sa)
const
void
*
addr
;
int
len
;
CHECK_OBJ_NOTNULL
(
req
,
REQ_MAGIC
);
switch
(
sa
->
ss_family
)
{
case
AF_INET
:
len
=
INET_ADDRSTRLEN
;
...
...
@@ -310,61 +310,65 @@ VRT_IP_string(const struct sess *sp, const struct sockaddr_storage *sa)
INCOMPL
();
}
XXXAN
(
len
);
AN
(
p
=
WS_Alloc
(
sp
->
req
->
http
->
ws
,
len
));
AN
(
p
=
WS_Alloc
(
req
->
http
->
ws
,
len
));
AN
(
inet_ntop
(
sa
->
ss_family
,
addr
,
p
,
len
));
return
(
p
);
}
char
*
VRT_int_string
(
const
struct
sess
*
sp
,
int
num
)
VRT_int_string
(
struct
req
*
req
,
int
num
)
{
char
*
p
;
int
size
;
CHECK_OBJ_NOTNULL
(
req
,
REQ_MAGIC
);
size
=
snprintf
(
NULL
,
0
,
"%d"
,
num
)
+
1
;
AN
(
p
=
WS_Alloc
(
sp
->
req
->
http
->
ws
,
size
));
AN
(
p
=
WS_Alloc
(
req
->
http
->
ws
,
size
));
assert
(
snprintf
(
p
,
size
,
"%d"
,
num
)
<
size
);
return
(
p
);
}
char
*
VRT_double_string
(
const
struct
sess
*
sp
,
double
num
)
VRT_double_string
(
struct
req
*
req
,
double
num
)
{
char
*
p
;
int
size
;
CHECK_OBJ_NOTNULL
(
req
,
REQ_MAGIC
);
size
=
snprintf
(
NULL
,
0
,
"%.3f"
,
num
)
+
1
;
AN
(
p
=
WS_Alloc
(
sp
->
req
->
http
->
ws
,
size
));
AN
(
p
=
WS_Alloc
(
req
->
http
->
ws
,
size
));
assert
(
snprintf
(
p
,
size
,
"%.3f"
,
num
)
<
size
);
return
(
p
);
}
char
*
VRT_time_string
(
const
struct
sess
*
sp
,
double
t
)
VRT_time_string
(
struct
req
*
req
,
double
t
)
{
char
*
p
;
AN
(
p
=
WS_Alloc
(
sp
->
req
->
http
->
ws
,
VTIM_FORMAT_SIZE
));
VTIM_format
(
t
,
p
);
CHECK_OBJ_NOTNULL
(
req
,
REQ_MAGIC
);
p
=
WS_Alloc
(
req
->
http
->
ws
,
VTIM_FORMAT_SIZE
);
if
(
p
!=
NULL
)
VTIM_format
(
t
,
p
);
return
(
p
);
}
const
char
*
VRT_backend_string
(
const
struct
sess
*
sp
,
const
struct
director
*
d
)
VRT_backend_string
(
const
struct
req
*
req
,
const
struct
director
*
d
)
{
CHECK_OBJ_NOTNULL
(
sp
,
SESS
_MAGIC
);
CHECK_OBJ_NOTNULL
(
req
,
REQ
_MAGIC
);
if
(
d
==
NULL
)
d
=
sp
->
req
->
director
;
d
=
req
->
director
;
if
(
d
==
NULL
)
return
(
NULL
);
return
(
d
->
vcl_name
);
}
const
char
*
VRT_bool_string
(
const
struct
sess
*
sp
,
unsigned
val
)
VRT_bool_string
(
const
struct
req
*
req
,
unsigned
val
)
{
(
void
)
sp
;
CHECK_OBJ_NOTNULL
(
req
,
REQ_MAGIC
)
;
return
(
val
?
"true"
:
"false"
);
}
...
...
@@ -395,16 +399,16 @@ VRT_panic(const struct sess *sp, const char *str, ...)
/*--------------------------------------------------------------------*/
void
VRT_synth_page
(
const
struct
sess
*
sp
,
unsigned
flags
,
const
char
*
str
,
...)
VRT_synth_page
(
struct
req
*
req
,
unsigned
flags
,
const
char
*
str
,
...)
{
va_list
ap
;
const
char
*
p
;
struct
vsb
*
vsb
;
(
void
)
flags
;
CHECK_OBJ_NOTNULL
(
sp
,
SESS
_MAGIC
);
CHECK_OBJ_NOTNULL
(
sp
->
req
->
obj
,
OBJECT_MAGIC
);
vsb
=
SMS_Makesynth
(
sp
->
req
->
obj
);
CHECK_OBJ_NOTNULL
(
req
,
REQ
_MAGIC
);
CHECK_OBJ_NOTNULL
(
req
->
obj
,
OBJECT_MAGIC
);
vsb
=
SMS_Makesynth
(
req
->
obj
);
AN
(
vsb
);
VSB_cat
(
vsb
,
str
);
...
...
@@ -417,10 +421,9 @@ VRT_synth_page(const struct sess *sp, unsigned flags, const char *str, ...)
p
=
va_arg
(
ap
,
const
char
*
);
}
va_end
(
ap
);
SMS_Finish
(
sp
->
req
->
obj
);
http_Unset
(
sp
->
req
->
obj
->
http
,
H_Content_Length
);
http_PrintfHeader
(
sp
->
req
->
obj
->
http
,
"Content-Length: %zd"
,
sp
->
req
->
obj
->
len
);
SMS_Finish
(
req
->
obj
);
http_Unset
(
req
->
obj
->
http
,
H_Content_Length
);
http_PrintfHeader
(
req
->
obj
->
http
,
"Content-Length: %zd"
,
req
->
obj
->
len
);
}
/*--------------------------------------------------------------------*/
...
...
include/vrt.h
View file @
56ce6e35
...
...
@@ -157,7 +157,7 @@ void VRT_purge(const struct sess *sp, double ttl, double grace);
void
VRT_count
(
struct
req
*
,
unsigned
);
int
VRT_rewrite
(
const
char
*
,
const
char
*
);
void
VRT_error
(
const
struct
sess
*
,
unsigned
,
const
char
*
);
void
VRT_error
(
struct
req
*
,
unsigned
,
const
char
*
);
int
VRT_switch_config
(
const
char
*
);
enum
gethdr_e
{
HDR_REQ
,
HDR_RESP
,
HDR_OBJ
,
HDR_BEREQ
,
HDR_BERESP
};
...
...
@@ -176,7 +176,7 @@ void VRT_ESI(const struct sess *sp);
void
VRT_Rollback
(
const
struct
sess
*
sp
);
/* Synthetic pages */
void
VRT_synth_page
(
const
struct
sess
*
sp
,
unsigned
flags
,
const
char
*
,
...);
void
VRT_synth_page
(
struct
req
*
sp
,
unsigned
flags
,
const
char
*
,
...);
/* Backend related */
void
VRT_init_dir
(
struct
cli
*
,
struct
director
**
,
const
char
*
name
,
...
...
@@ -210,12 +210,12 @@ int VRT_Stv(const char *nm);
/* Convert things to string */
char
*
VRT_IP_string
(
const
struct
sess
*
sp
,
const
struct
sockaddr_storage
*
sa
);
char
*
VRT_int_string
(
const
struct
sess
*
sp
,
int
);
char
*
VRT_double_string
(
const
struct
sess
*
sp
,
double
);
char
*
VRT_time_string
(
const
struct
sess
*
sp
,
double
);
const
char
*
VRT_bool_string
(
const
struct
sess
*
sp
,
unsigned
);
const
char
*
VRT_backend_string
(
const
struct
sess
*
sp
,
const
struct
director
*
d
);
char
*
VRT_IP_string
(
struct
req
*
,
const
struct
sockaddr_storage
*
sa
);
char
*
VRT_int_string
(
struct
req
*
,
int
);
char
*
VRT_double_string
(
struct
req
*
,
double
);
char
*
VRT_time_string
(
struct
req
*
,
double
);
const
char
*
VRT_bool_string
(
const
struct
req
*
,
unsigned
);
const
char
*
VRT_backend_string
(
const
struct
req
*
,
const
struct
director
*
d
);
#define VRT_done(req, hand) \
do { \
...
...
@@ -223,4 +223,4 @@ const char *VRT_backend_string(const struct sess *sp, const struct director *d);
return (1); \
} while (0)
const
char
*
VRT_
WrkString
(
const
struct
sess
*
sp
,
const
char
*
p
,
...);
const
char
*
VRT_
ReqString
(
struct
req
*
,
const
char
*
p
,
...);
lib/libvcl/vcc_action.c
View file @
56ce6e35
...
...
@@ -57,7 +57,7 @@ parse_error(struct vcc *tl)
{
vcc_NextToken
(
tl
);
Fb
(
tl
,
1
,
"VRT_error(
sp
,
\n
"
);
Fb
(
tl
,
1
,
"VRT_error(
req
,
\n
"
);
if
(
tl
->
t
->
tok
==
'('
)
{
vcc_NextToken
(
tl
);
vcc_Expr
(
tl
,
INT
);
...
...
@@ -303,7 +303,7 @@ parse_synthetic(struct vcc *tl)
{
vcc_NextToken
(
tl
);
Fb
(
tl
,
1
,
"VRT_synth_page(
sp
, 0, "
);
Fb
(
tl
,
1
,
"VRT_synth_page(
req
, 0, "
);
vcc_Expr
(
tl
,
STRING_LIST
);
ERRCHK
(
tl
);
Fb
(
tl
,
0
,
");
\n
"
);
...
...
lib/libvcl/vcc_expr.c
View file @
56ce6e35
...
...
@@ -423,15 +423,15 @@ vcc_expr_tostring(struct expr **e, enum var_type fmt)
p
=
NULL
;
switch
((
*
e
)
->
fmt
)
{
case
BACKEND
:
p
=
"VRT_backend_string(
sp
,
\v
1)"
;
break
;
case
BOOL
:
p
=
"VRT_bool_string(
sp
,
\v
1)"
;
break
;
case
DURATION
:
p
=
"VRT_double_string(
sp
,
\v
1)"
;
break
;
case
BACKEND
:
p
=
"VRT_backend_string(
req
,
\v
1)"
;
break
;
case
BOOL
:
p
=
"VRT_bool_string(
req
,
\v
1)"
;
break
;
case
DURATION
:
p
=
"VRT_double_string(
req
,
\v
1)"
;
break
;
/* XXX: should DURATION insist on "s" suffix ? */
case
INT
:
p
=
"VRT_int_string(
sp
,
\v
1)"
;
break
;
case
IP
:
p
=
"VRT_IP_string(
sp
,
\v
1)"
;
break
;
case
BYTES
:
p
=
"VRT_double_string(
sp
,
\v
1)"
;
break
;
/* XXX */
case
REAL
:
p
=
"VRT_double_string(
sp
,
\v
1)"
;
break
;
case
TIME
:
p
=
"VRT_time_string(
sp
,
\v
1)"
;
break
;
case
INT
:
p
=
"VRT_int_string(
req
,
\v
1)"
;
break
;
case
IP
:
p
=
"VRT_IP_string(
req
,
\v
1)"
;
break
;
case
BYTES
:
p
=
"VRT_double_string(
req
,
\v
1)"
;
break
;
/* XXX */
case
REAL
:
p
=
"VRT_double_string(
req
,
\v
1)"
;
break
;
case
TIME
:
p
=
"VRT_time_string(
req
,
\v
1)"
;
break
;
default:
break
;
}
if
(
p
!=
NULL
)
{
...
...
@@ -819,7 +819,7 @@ vcc_expr_add(struct vcc *tl, struct expr **e, enum var_type fmt)
}
if
(
fmt
!=
STRING_LIST
&&
(
*
e
)
->
fmt
==
STRING_LIST
)
*
e
=
vcc_expr_edit
(
STRING
,
"
\v
+VRT_
WrkString(sp
,
\n\v
1,
\n
vrt_magic_string_end)"
,
"
\v
+VRT_
ReqString(req
,
\n\v
1,
\n
vrt_magic_string_end)"
,
*
e
,
NULL
);
if
(
fmt
==
STRING_LIST
&&
(
*
e
)
->
fmt
==
STRING
)
(
*
e
)
->
fmt
=
STRING_LIST
;
...
...
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