[master] e68819f Change VCL_Check signature to return enum vcl_check
Nils Goroll
nils.goroll at uplex.de
Mon Feb 26 19:28:06 UTC 2018
commit e68819f444a541064dd74bd7509d65b4f37fa5cc
Author: Nils Goroll <nils.goroll at uplex.de>
Date: Mon Feb 26 17:11:38 2018 +0100
Change VCL_Check signature to return enum vcl_check
diff --git a/include/vapi/vsl.h b/include/vapi/vsl.h
index caa3443..ad2ae52 100644
--- a/include/vapi/vsl.h
+++ b/include/vapi/vsl.h
@@ -312,7 +312,15 @@ int VSL_ResetCursor(const struct VSL_cursor *c);
* -1: Operation not supported
*/
-int VSL_Check(const struct VSL_cursor *c, const struct VSLC_ptr *ptr);
+enum vsl_check {
+ vsl_check_e_notsupp = -1,
+ vsl_check_e_inval = 0,
+ vsl_check_warn = 1,
+ vsl_check_valid = 2
+};
+
+enum vsl_check
+VSL_Check(const struct VSL_cursor *c, const struct VSLC_ptr *ptr);
/*
* Check if the VSLC_ptr structure points to a value that is still
* valid:
diff --git a/lib/libvarnishapi/vsl_api.h b/lib/libvarnishapi/vsl_api.h
index 95e4ace..913eb54 100644
--- a/lib/libvarnishapi/vsl_api.h
+++ b/lib/libvarnishapi/vsl_api.h
@@ -39,7 +39,8 @@ void vsl_vbm_bitclr(int bit, void *priv);
typedef void vslc_delete_f(const struct VSL_cursor *);
typedef int vslc_next_f(const struct VSL_cursor *);
typedef int vslc_reset_f(const struct VSL_cursor *);
-typedef int vslc_check_f(const struct VSL_cursor *, const struct VSLC_ptr *);
+typedef enum vsl_check vslc_check_f(const struct VSL_cursor *,
+ const struct VSLC_ptr *);
struct vslc_tbl {
unsigned magic;
diff --git a/lib/libvarnishapi/vsl_cursor.c b/lib/libvarnishapi/vsl_cursor.c
index ac708d8..56b2983 100644
--- a/lib/libvarnishapi/vsl_cursor.c
+++ b/lib/libvarnishapi/vsl_cursor.c
@@ -91,7 +91,7 @@ vslc_vsm_delete(const struct VSL_cursor *cursor)
* written
*/
-static int
+static enum vsl_check v_matchproto_(vslc_check_f)
vslc_vsm_check(const struct VSL_cursor *cursor, const struct VSLC_ptr *ptr)
{
const struct vslc_vsm *c;
@@ -101,25 +101,25 @@ vslc_vsm_check(const struct VSL_cursor *cursor, const struct VSLC_ptr *ptr)
assert(&c->cursor == cursor);
if (ptr->ptr == NULL)
- return (0);
+ return (vsl_check_e_inval);
dist = c->head->segment_n - ptr->priv;
if (dist >= VSL_SEGMENTS - 2)
/* Too close to continue */
- return (0);
+ return (vsl_check_e_inval);
if (dist >= VSL_SEGMENTS - 4)
/* Warning level */
- return (1);
+ return (vsl_check_warn);
/* Safe */
- return (2);
+ return (vsl_check_valid);
}
static int
vslc_vsm_next(const struct VSL_cursor *cursor)
{
struct vslc_vsm *c;
- int i;
+ enum vsl_check i;
uint32_t t;
CAST_OBJ_NOTNULL(c, cursor->priv_data, VSLC_VSM_MAGIC);
@@ -127,7 +127,7 @@ vslc_vsm_next(const struct VSL_cursor *cursor)
while (1) {
i = vslc_vsm_check(&c->cursor, &c->next);
- if (i <= 0) {
+ if (i < vsl_check_warn) {
if (VSM_StillValid(c->vsm, &c->vf) != VSM_valid)
return (-2); /* VSL abandoned */
else
@@ -489,13 +489,13 @@ VSL_Next(const struct VSL_cursor *cursor)
return ((tbl->next)(cursor));
}
-int
+enum vsl_check
VSL_Check(const struct VSL_cursor *cursor, const struct VSLC_ptr *ptr)
{
const struct vslc_tbl *tbl;
CAST_OBJ_NOTNULL(tbl, cursor->priv_tbl, VSLC_TBL_MAGIC);
if (tbl->check == NULL)
- return (-1);
+ return (vsl_check_e_notsupp);
return ((tbl->check)(cursor, ptr));
}
diff --git a/lib/libvarnishapi/vsl_dispatch.c b/lib/libvarnishapi/vsl_dispatch.c
index 67d3cb0..ccfe026 100644
--- a/lib/libvarnishapi/vsl_dispatch.c
+++ b/lib/libvarnishapi/vsl_dispatch.c
@@ -435,7 +435,7 @@ vtx_append(struct VSLQ *vslq, struct vtx *vtx, const struct VSLC_ptr *start,
return;
AN(start);
- if (VSL_Check(vslq->c, start) == 2 &&
+ if (VSL_Check(vslq->c, start) == vsl_check_valid &&
!VTAILQ_EMPTY(&vtx->shmchunks_free)) {
/* Shmref it */
chunk = VTAILQ_FIRST(&vtx->shmchunks_free);
More information about the varnish-commit
mailing list