Use a varnish lock for struct VPFX(tus_server)

parent 3a8b73eb
...@@ -84,7 +84,7 @@ tus_server_lock(struct VPFX(tus_server) *s) ...@@ -84,7 +84,7 @@ tus_server_lock(struct VPFX(tus_server) *s)
{ {
CHECK_OBJ_NOTNULL(s, VMOD_TUS_SERVER_MAGIC); CHECK_OBJ_NOTNULL(s, VMOD_TUS_SERVER_MAGIC);
AZ(pthread_mutex_lock(&s->mtx)); Lck_Lock(&s->mtx);
} }
void void
...@@ -92,7 +92,7 @@ tus_server_unlock(struct VPFX(tus_server) *s) ...@@ -92,7 +92,7 @@ tus_server_unlock(struct VPFX(tus_server) *s)
{ {
CHECK_OBJ_NOTNULL(s, VMOD_TUS_SERVER_MAGIC); CHECK_OBJ_NOTNULL(s, VMOD_TUS_SERVER_MAGIC);
AZ(pthread_mutex_unlock(&s->mtx)); Lck_Unlock(&s->mtx);
} }
VCL_BYTES VCL_BYTES
......
...@@ -44,7 +44,7 @@ struct VPFX(tus_server) { ...@@ -44,7 +44,7 @@ struct VPFX(tus_server) {
VSPLAY_ENTRY(VPFX(tus_server)) entry; VSPLAY_ENTRY(VPFX(tus_server)) entry;
pthread_mutex_t mtx; struct lock mtx;
char *vcl_name; char *vcl_name;
char *basedir; char *basedir;
char *schemeauth; char *schemeauth;
......
...@@ -55,6 +55,7 @@ ...@@ -55,6 +55,7 @@
static unsigned refcnt = 0; static unsigned refcnt = 0;
static struct vsc_seg *vsc_seg_lck = NULL; static struct vsc_seg *vsc_seg_lck = NULL;
struct VSC_lck *lck_fcore = NULL; struct VSC_lck *lck_fcore = NULL;
static struct VSC_lck *lck_tussrv = NULL;
/* ============================================================ /* ============================================================
* vmod init/fini * vmod init/fini
...@@ -69,8 +70,12 @@ tus_init(VRT_CTX, struct vmod_priv *priv) ...@@ -69,8 +70,12 @@ tus_init(VRT_CTX, struct vmod_priv *priv)
return (0); return (0);
AZ(vsc_seg_lck); AZ(vsc_seg_lck);
AZ(lck_fcore);
lck_fcore = Lck_CreateClass(&vsc_seg_lck, "tus.fcore"); lck_fcore = Lck_CreateClass(&vsc_seg_lck, "tus.fcore");
AN(lck_fcore); AN(lck_fcore);
AZ(lck_tussrv);
lck_tussrv = Lck_CreateClass(&vsc_seg_lck, "tus.server");
AN(lck_tussrv);
tus_file_init(); tus_file_init();
return (tus_chksum_init(ctx)); return (tus_chksum_init(ctx));
} }
...@@ -207,7 +212,7 @@ tus_server_new(VRT_CTX, const char *vcl_name, ...@@ -207,7 +212,7 @@ tus_server_new(VRT_CTX, const char *vcl_name,
ALLOC_OBJ(tussrv, VMOD_TUS_SERVER_MAGIC); ALLOC_OBJ(tussrv, VMOD_TUS_SERVER_MAGIC);
AN(tussrv); AN(tussrv);
AZ(pthread_mutex_init(&tussrv->mtx, NULL)); Lck_New(&tussrv->mtx, lck_tussrv);
REPLACE(tussrv->vcl_name, vcl_name); REPLACE(tussrv->vcl_name, vcl_name);
REPLACE(tussrv->schemeauth, args->schemeauth); REPLACE(tussrv->schemeauth, args->schemeauth);
REPLACE(tussrv->basedir, basedir); REPLACE(tussrv->basedir, basedir);
...@@ -277,9 +282,9 @@ tus_server__init(VRT_CTX, struct VPFX(tus_server) **tussrvp, ...@@ -277,9 +282,9 @@ tus_server__init(VRT_CTX, struct VPFX(tus_server) **tussrvp,
tussrv->expires = args->expires; tussrv->expires = args->expires;
tussrv->digest = d; tussrv->digest = d;
AZ(pthread_mutex_lock(&tussrv->mtx)); Lck_Lock(&tussrv->mtx);
tus_file_load(tussrv); tus_file_load(tussrv);
AZ(pthread_mutex_unlock(&tussrv->mtx)); Lck_Unlock(&tussrv->mtx);
*tussrvp = tussrv; *tussrvp = tussrv;
...@@ -301,7 +306,7 @@ tus_server__fini(struct VPFX(tus_server) **tussrvp) ...@@ -301,7 +306,7 @@ tus_server__fini(struct VPFX(tus_server) **tussrvp)
AZ(tussrv->exp); AZ(tussrv->exp);
remove = VSPLAY_REMOVE(tus_servers, tus_servers, tussrv); remove = VSPLAY_REMOVE(tus_servers, tus_servers, tussrv);
assert (remove == tussrv); assert (remove == tussrv);
AZ(pthread_mutex_destroy(&tussrv->mtx)); Lck_Delete(&tussrv->mtx);
REPLACE(tussrv->vcl_name, NULL); REPLACE(tussrv->vcl_name, NULL);
REPLACE(tussrv->basedir, NULL); REPLACE(tussrv->basedir, NULL);
AZ(close(tussrv->basefd)); AZ(close(tussrv->basefd));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment