Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
varnish-cache
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
varnishcache
varnish-cache
Commits
cc70c580
Commit
cc70c580
authored
Jun 17, 2015
by
Poul-Henning Kamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rearrange the backend code a bit.
parent
28bdbcc2
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
111 additions
and
119 deletions
+111
-119
cache.h
bin/varnishd/cache/cache.h
+3
-0
cache_backend.c
bin/varnishd/cache/cache_backend.c
+6
-73
cache_backend.h
bin/varnishd/cache/cache_backend.h
+5
-4
cache_backend_cfg.c
bin/varnishd/cache/cache_backend_cfg.c
+92
-39
cache_backend_poll.c
bin/varnishd/cache/cache_backend_poll.c
+1
-0
cache_backend_tcp.c
bin/varnishd/cache/cache_backend_tcp.c
+1
-0
cache_main.c
bin/varnishd/cache/cache_main.c
+0
-1
cache_panic.c
bin/varnishd/cache/cache_panic.c
+1
-0
cache_http1_fetch.c
bin/varnishd/http1/cache_http1_fetch.c
+1
-1
cache_http1_pipe.c
bin/varnishd/http1/cache_http1_pipe.c
+1
-1
No files found.
bin/varnishd/cache/cache.h
View file @
cc70c580
...
...
@@ -678,6 +678,9 @@ void VCA_Shutdown(void);
/* cache_backend_cfg.c */
void
VBE_InitCfg
(
void
);
/* cache_backend_poll.c */
void
VBP_Init
(
void
);
/* cache_ban.c */
struct
ban
*
BAN_New
(
void
);
int
BAN_AddTest
(
struct
ban
*
,
const
char
*
,
const
char
*
,
const
char
*
);
...
...
bin/varnishd/cache/cache_backend.c
View file @
cc70c580
...
...
@@ -36,9 +36,8 @@
#include "cache.h"
#include "cache_backend.h"
#include "cache_director.h"
#include "
vcl
.h"
#include "
cache_backend
.h"
#include "vrt.h"
#include "vtcp.h"
...
...
@@ -297,21 +296,16 @@ vbe_dir_http1pipe(const struct director *d, struct req *req, struct busyobj *bo)
/*--------------------------------------------------------------------*/
struct
director
*
V
RT_new_backend
(
VRT_CTX
,
const
struct
vrt_backend
*
vrt
)
void
V
BE_fill_director
(
struct
backend
*
be
,
const
struct
vrt_backend
*
vrt
)
{
struct
director
*
d
;
struct
backend
*
be
;
ASSERT_CLI
();
CHECK_OBJ_NOTNULL
(
ctx
,
VRT_CTX_MAGIC
);
CHECK_OBJ_NOTNULL
(
be
,
BACKEND_MAGIC
);
CHECK_OBJ_NOTNULL
(
vrt
,
VRT_BACKEND_MAGIC
);
AN
(
ctx
->
vcl
);
be
=
VBE_AddBackend
(
ctx
,
vrt
);
AN
(
be
);
ALLOC_OBJ
(
d
,
DIRECTOR_MAGIC
);
XXXAN
(
d
);
INIT_OBJ
(
be
->
director
,
DIRECTOR_MAGIC
);
d
=
be
->
director
;
d
->
priv
=
be
;
d
->
priv2
=
vrt
;
d
->
name
=
"backend"
;
...
...
@@ -322,65 +316,4 @@ VRT_new_backend(VRT_CTX, const struct vrt_backend *vrt)
d
->
getbody
=
vbe_dir_getbody
;
d
->
getip
=
vbe_dir_getip
;
d
->
finish
=
vbe_dir_finish
;
if
(
vrt
->
probe
!=
NULL
)
VBP_Insert
(
be
,
vrt
->
probe
,
vrt
->
hosthdr
);
return
(
d
);
}
void
VRT_event_vbe
(
VRT_CTX
,
enum
vcl_event_e
ev
,
const
struct
director
*
d
,
const
struct
vrt_backend
*
vrt
)
{
struct
backend
*
be
;
ASSERT_CLI
();
(
void
)
ev
;
CHECK_OBJ_NOTNULL
(
ctx
,
VRT_CTX_MAGIC
);
CHECK_OBJ_NOTNULL
(
d
,
DIRECTOR_MAGIC
);
CHECK_OBJ_NOTNULL
(
vrt
,
VRT_BACKEND_MAGIC
);
assert
(
d
->
priv2
==
vrt
);
CAST_OBJ_NOTNULL
(
be
,
d
->
priv
,
BACKEND_MAGIC
);
if
(
ev
==
VCL_EVENT_WARM
)
{
be
->
vsc
=
VSM_Alloc
(
sizeof
*
be
->
vsc
,
VSC_CLASS
,
VSC_type_vbe
,
be
->
display_name
);
AN
(
be
->
vsc
);
}
if
(
be
->
probe
!=
NULL
&&
ev
==
VCL_EVENT_WARM
)
VBP_Control
(
be
,
1
);
if
(
be
->
probe
!=
NULL
&&
ev
==
VCL_EVENT_COLD
)
VBP_Control
(
be
,
0
);
if
(
ev
==
VCL_EVENT_COLD
)
{
VSM_Free
(
be
->
vsc
);
be
->
vsc
=
NULL
;
}
}
void
VRT_delete_backend
(
VRT_CTX
,
struct
director
**
dp
)
{
struct
director
*
d
;
struct
backend
*
be
;
ASSERT_CLI
();
CHECK_OBJ_NOTNULL
(
ctx
,
VRT_CTX_MAGIC
);
AN
(
dp
);
AN
(
*
dp
);
d
=
*
dp
;
*
dp
=
NULL
;
CHECK_OBJ_NOTNULL
(
d
,
DIRECTOR_MAGIC
);
CAST_OBJ_NOTNULL
(
be
,
d
->
priv
,
BACKEND_MAGIC
);
if
(
be
->
probe
!=
NULL
)
VBP_Remove
(
be
);
VBE_DeleteBackend
(
be
);
free
(
d
->
vcl_name
);
FREE_OBJ
(
d
);
}
bin/varnishd/cache/cache_backend.h
View file @
cc70c580
...
...
@@ -82,6 +82,8 @@ struct backend {
struct
VSC_C_vbe
*
vsc
;
struct
tcp_pool
*
tcp_pool
;
struct
director
director
[
1
];
};
/* -------------------------------------------------------------------*/
...
...
@@ -105,11 +107,11 @@ struct vbc {
struct
worker
*
wrk
;
};
/* cache_backend.c */
void
VBE_fill_director
(
struct
backend
*
be
,
const
struct
vrt_backend
*
vrt
);
/* cache_backend_cfg.c */
unsigned
VBE_Healthy
(
const
struct
backend
*
b
,
double
*
changed
);
struct
backend
*
VBE_AddBackend
(
const
struct
vrt_ctx
*
,
const
struct
vrt_backend
*
);
void
VBE_DeleteBackend
(
struct
backend
*
);
/* cache_backend_poll.c */
void
VBP_Insert
(
struct
backend
*
b
,
struct
vrt_backend_probe
const
*
p
,
...
...
@@ -117,7 +119,6 @@ void VBP_Insert(struct backend *b, struct vrt_backend_probe const *p,
void
VBP_Remove
(
struct
backend
*
b
);
void
VBP_Control
(
const
struct
backend
*
b
,
int
stop
);
void
VBP_Status
(
struct
cli
*
cli
,
const
struct
backend
*
,
int
details
);
void
VBP_Init
(
void
);
struct
tcp_pool
*
VBT_Ref
(
const
struct
suckaddr
*
ip4
,
const
struct
suckaddr
*
ip6
);
...
...
bin/varnishd/cache/cache_backend_cfg.c
View file @
cc70c580
...
...
@@ -38,76 +38,56 @@
#include "cache.h"
#include "cache_director.h"
#include "cache_backend.h"
#include "vcli.h"
#include "vcli_priv.h"
#include "vsa.h"
#include "vcl.h"
#include "vrt.h"
#include "vtim.h"
static
VTAILQ_HEAD
(,
backend
)
backends
=
VTAILQ_HEAD_INITIALIZER
(
backends
);
static
struct
lock
backends_mtx
;
/*--------------------------------------------------------------------
*/
void
VBE_DeleteBackend
(
struct
backend
*
b
)
{
CHECK_OBJ_NOTNULL
(
b
,
BACKEND_MAGIC
);
Lck_Lock
(
&
backends_mtx
);
VTAILQ_REMOVE
(
&
backends
,
b
,
list
);
VSC_C_main
->
n_backend
--
;
Lck_Unlock
(
&
backends_mtx
);
free
(
b
->
ipv4
);
free
(
b
->
ipv6
);
free
(
b
->
display_name
);
AZ
(
b
->
vsc
);
VBT_Rel
(
&
b
->
tcp_pool
);
Lck_Delete
(
&
b
->
mtx
);
FREE_OBJ
(
b
);
}
/*--------------------------------------------------------------------
* Create a new director::backend instance.
*/
struct
backend
*
V
BE_AddBackend
(
const
struct
vrt_ctx
*
ctx
,
const
struct
vrt_backend
*
vb
)
struct
director
*
V
RT_new_backend
(
VRT_CTX
,
const
struct
vrt_backend
*
vrt
)
{
struct
backend
*
b
;
char
buf
[
128
];
struct
vcl
*
vcl
;
CHECK_OBJ_NOTNULL
(
ctx
,
VRT_CTX_MAGIC
);
CHECK_OBJ_NOTNULL
(
vrt
,
VRT_BACKEND_MAGIC
);
vcl
=
ctx
->
vcl
;
AN
(
vcl
);
AN
(
v
b
->
vcl_name
);
assert
(
v
b
->
ipv4_suckaddr
!=
NULL
||
vb
->
ipv6_suckaddr
!=
NULL
);
AN
(
v
rt
->
vcl_name
);
assert
(
v
rt
->
ipv4_suckaddr
!=
NULL
||
vrt
->
ipv6_suckaddr
!=
NULL
);
/* Create new backend */
ALLOC_OBJ
(
b
,
BACKEND_MAGIC
);
XXXAN
(
b
);
Lck_New
(
&
b
->
mtx
,
lck_backend
);
bprintf
(
buf
,
"%s.%s"
,
VCL_Name
(
vcl
),
v
b
->
vcl_name
);
bprintf
(
buf
,
"%s.%s"
,
VCL_Name
(
vcl
),
v
rt
->
vcl_name
);
REPLACE
(
b
->
display_name
,
buf
);
b
->
vcl
=
vcl
;
b
->
vcl_name
=
v
b
->
vcl_name
;
b
->
ipv4_addr
=
v
b
->
ipv4_addr
;
b
->
ipv6_addr
=
v
b
->
ipv6_addr
;
b
->
port
=
v
b
->
port
;
b
->
vcl_name
=
v
rt
->
vcl_name
;
b
->
ipv4_addr
=
v
rt
->
ipv4_addr
;
b
->
ipv6_addr
=
v
rt
->
ipv6_addr
;
b
->
port
=
v
rt
->
port
;
b
->
tcp_pool
=
VBT_Ref
(
v
b
->
ipv4_suckaddr
,
vb
->
ipv6_suckaddr
);
b
->
tcp_pool
=
VBT_Ref
(
v
rt
->
ipv4_suckaddr
,
vrt
->
ipv6_suckaddr
);
if
(
v
b
->
ipv4_suckaddr
!=
NULL
)
b
->
ipv4
=
VSA_Clone
(
v
b
->
ipv4_suckaddr
);
if
(
v
b
->
ipv6_suckaddr
!=
NULL
)
b
->
ipv6
=
VSA_Clone
(
v
b
->
ipv6_suckaddr
);
if
(
v
rt
->
ipv4_suckaddr
!=
NULL
)
b
->
ipv4
=
VSA_Clone
(
v
rt
->
ipv4_suckaddr
);
if
(
v
rt
->
ipv6_suckaddr
!=
NULL
)
b
->
ipv6
=
VSA_Clone
(
v
rt
->
ipv6_suckaddr
);
assert
(
b
->
ipv4
!=
NULL
||
b
->
ipv6
!=
NULL
);
...
...
@@ -119,7 +99,80 @@ VBE_AddBackend(const struct vrt_ctx *ctx, const struct vrt_backend *vb)
VTAILQ_INSERT_TAIL
(
&
backends
,
b
,
list
);
VSC_C_main
->
n_backend
++
;
Lck_Unlock
(
&
backends_mtx
);
return
(
b
);
VBE_fill_director
(
b
,
vrt
);
if
(
vrt
->
probe
!=
NULL
)
VBP_Insert
(
b
,
vrt
->
probe
,
vrt
->
hosthdr
);
return
(
b
->
director
);
}
void
VRT_event_vbe
(
VRT_CTX
,
enum
vcl_event_e
ev
,
const
struct
director
*
d
,
const
struct
vrt_backend
*
vrt
)
{
struct
backend
*
be
;
ASSERT_CLI
();
(
void
)
ev
;
CHECK_OBJ_NOTNULL
(
ctx
,
VRT_CTX_MAGIC
);
CHECK_OBJ_NOTNULL
(
d
,
DIRECTOR_MAGIC
);
CHECK_OBJ_NOTNULL
(
vrt
,
VRT_BACKEND_MAGIC
);
assert
(
d
->
priv2
==
vrt
);
CAST_OBJ_NOTNULL
(
be
,
d
->
priv
,
BACKEND_MAGIC
);
if
(
ev
==
VCL_EVENT_WARM
)
{
be
->
vsc
=
VSM_Alloc
(
sizeof
*
be
->
vsc
,
VSC_CLASS
,
VSC_type_vbe
,
be
->
display_name
);
AN
(
be
->
vsc
);
}
if
(
be
->
probe
!=
NULL
&&
ev
==
VCL_EVENT_WARM
)
VBP_Control
(
be
,
1
);
if
(
be
->
probe
!=
NULL
&&
ev
==
VCL_EVENT_COLD
)
VBP_Control
(
be
,
0
);
if
(
ev
==
VCL_EVENT_COLD
)
{
VSM_Free
(
be
->
vsc
);
be
->
vsc
=
NULL
;
}
}
void
VRT_delete_backend
(
VRT_CTX
,
struct
director
**
dp
)
{
struct
director
*
d
;
struct
backend
*
be
;
ASSERT_CLI
();
CHECK_OBJ_NOTNULL
(
ctx
,
VRT_CTX_MAGIC
);
AN
(
dp
);
AN
(
*
dp
);
d
=
*
dp
;
*
dp
=
NULL
;
CHECK_OBJ_NOTNULL
(
d
,
DIRECTOR_MAGIC
);
CAST_OBJ_NOTNULL
(
be
,
d
->
priv
,
BACKEND_MAGIC
);
if
(
be
->
probe
!=
NULL
)
VBP_Remove
(
be
);
free
(
d
->
vcl_name
);
Lck_Lock
(
&
backends_mtx
);
VTAILQ_REMOVE
(
&
backends
,
be
,
list
);
VSC_C_main
->
n_backend
--
;
Lck_Unlock
(
&
backends_mtx
);
free
(
be
->
ipv4
);
free
(
be
->
ipv6
);
free
(
be
->
display_name
);
AZ
(
be
->
vsc
);
VBT_Rel
(
&
be
->
tcp_pool
);
Lck_Delete
(
&
be
->
mtx
);
FREE_OBJ
(
be
);
}
/*---------------------------------------------------------------------
...
...
bin/varnishd/cache/cache_backend_poll.c
View file @
cc70c580
...
...
@@ -45,6 +45,7 @@
#include "cache.h"
#include "cache_director.h"
#include "cache_backend.h"
#include "vcli_priv.h"
#include "vrt.h"
...
...
bin/varnishd/cache/cache_backend_tcp.c
View file @
cc70c580
...
...
@@ -38,6 +38,7 @@
#include "cache.h"
#include "cache_director.h"
#include "cache_backend.h"
#include "cache_pool.h"
#include "vtcp.h"
...
...
bin/varnishd/cache/cache_main.c
View file @
cc70c580
...
...
@@ -33,7 +33,6 @@
#include <stdlib.h>
#include "cache.h"
#include "cache_backend.h"
#include "common/heritage.h"
#include "vcli_priv.h"
...
...
bin/varnishd/cache/cache_panic.c
View file @
cc70c580
...
...
@@ -43,6 +43,7 @@
#include "cache_filter.h"
#include "common/heritage.h"
#include "cache_director.h"
#include "cache_backend.h"
#include "storage/storage.h"
#include "vcli_priv.h"
...
...
bin/varnishd/http1/cache_http1_fetch.c
View file @
cc70c580
...
...
@@ -37,8 +37,8 @@
#include "hash/hash_slinger.h"
#include "cache/cache_backend.h"
#include "cache/cache_director.h"
#include "cache/cache_backend.h"
#include "vcli_priv.h"
#include "vtcp.h"
#include "vtim.h"
...
...
bin/varnishd/http1/cache_http1_pipe.c
View file @
cc70c580
...
...
@@ -36,8 +36,8 @@
#include "cache/cache.h"
#include "cache/cache_backend.h"
#include "cache/cache_director.h"
#include "cache/cache_backend.h"
#include "vtcp.h"
#include "vtim.h"
...
...
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