Use a varnish lock for struct VPFX(tus_server)

parent 3a8b73eb
......@@ -84,7 +84,7 @@ tus_server_lock(struct VPFX(tus_server) *s)
{
CHECK_OBJ_NOTNULL(s, VMOD_TUS_SERVER_MAGIC);
AZ(pthread_mutex_lock(&s->mtx));
Lck_Lock(&s->mtx);
}
void
......@@ -92,7 +92,7 @@ tus_server_unlock(struct VPFX(tus_server) *s)
{
CHECK_OBJ_NOTNULL(s, VMOD_TUS_SERVER_MAGIC);
AZ(pthread_mutex_unlock(&s->mtx));
Lck_Unlock(&s->mtx);
}
VCL_BYTES
......
......@@ -44,7 +44,7 @@ struct VPFX(tus_server) {
VSPLAY_ENTRY(VPFX(tus_server)) entry;
pthread_mutex_t mtx;
struct lock mtx;
char *vcl_name;
char *basedir;
char *schemeauth;
......
......@@ -55,6 +55,7 @@
static unsigned refcnt = 0;
static struct vsc_seg *vsc_seg_lck = NULL;
struct VSC_lck *lck_fcore = NULL;
static struct VSC_lck *lck_tussrv = NULL;
/* ============================================================
* vmod init/fini
......@@ -69,8 +70,12 @@ tus_init(VRT_CTX, struct vmod_priv *priv)
return (0);
AZ(vsc_seg_lck);
AZ(lck_fcore);
lck_fcore = Lck_CreateClass(&vsc_seg_lck, "tus.fcore");
AN(lck_fcore);
AZ(lck_tussrv);
lck_tussrv = Lck_CreateClass(&vsc_seg_lck, "tus.server");
AN(lck_tussrv);
tus_file_init();
return (tus_chksum_init(ctx));
}
......@@ -207,7 +212,7 @@ tus_server_new(VRT_CTX, const char *vcl_name,
ALLOC_OBJ(tussrv, VMOD_TUS_SERVER_MAGIC);
AN(tussrv);
AZ(pthread_mutex_init(&tussrv->mtx, NULL));
Lck_New(&tussrv->mtx, lck_tussrv);
REPLACE(tussrv->vcl_name, vcl_name);
REPLACE(tussrv->schemeauth, args->schemeauth);
REPLACE(tussrv->basedir, basedir);
......@@ -277,9 +282,9 @@ tus_server__init(VRT_CTX, struct VPFX(tus_server) **tussrvp,
tussrv->expires = args->expires;
tussrv->digest = d;
AZ(pthread_mutex_lock(&tussrv->mtx));
Lck_Lock(&tussrv->mtx);
tus_file_load(tussrv);
AZ(pthread_mutex_unlock(&tussrv->mtx));
Lck_Unlock(&tussrv->mtx);
*tussrvp = tussrv;
......@@ -301,7 +306,7 @@ tus_server__fini(struct VPFX(tus_server) **tussrvp)
AZ(tussrv->exp);
remove = VSPLAY_REMOVE(tus_servers, tus_servers, tussrv);
assert (remove == tussrv);
AZ(pthread_mutex_destroy(&tussrv->mtx));
Lck_Delete(&tussrv->mtx);
REPLACE(tussrv->vcl_name, NULL);
REPLACE(tussrv->basedir, NULL);
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