Skip to content

Commit 6e3e2f3

Browse files
committed
cache_ban: refactor: split out ban_add_duration / ban_add_number
Just moving code, no change Now guess which change is going to be proposed...
1 parent afdff6e commit 6e3e2f3

File tree

1 file changed

+33
-20
lines changed

1 file changed

+33
-20
lines changed

bin/varnishd/cache/cache_ban_build.c

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -240,14 +240,42 @@ ban_add_spec(struct ban_proto *bp, const struct pvar *pv, int op, const char *a3
240240
return (ban_parse_regexp(bp, a3));
241241
}
242242

243+
static const char *
244+
ban_add_double(struct ban_proto *bp, const struct pvar *pv, int op, double darg)
245+
{
246+
uint64_t dtmp;
247+
uint8_t denc[sizeof darg];
248+
249+
assert(BANS_HAS_ARG2_DOUBLE(pv->tag));
250+
assert(sizeof darg == sizeof dtmp);
251+
assert(sizeof dtmp == sizeof denc);
252+
memcpy(&dtmp, &darg, sizeof dtmp);
253+
vbe64enc(denc, dtmp);
254+
255+
ban_add_lump(bp, denc, sizeof denc);
256+
VSB_putc(bp->vsb, op);
257+
return (NULL);
258+
}
259+
260+
static const char *
261+
ban_add_duration(struct ban_proto *bp, const struct pvar *pv, int op, const char *a3)
262+
{
263+
double darg;
264+
265+
assert(pv->flag & BANS_FLAG_DURATION);
266+
darg = VNUM_duration(a3);
267+
if (isnan(darg)) {
268+
return (ban_error(bp,
269+
"expected duration <n.nn>[ms|s|m|h|d|w|y] got \"%s\"", a3));
270+
}
271+
return (ban_add_double(bp, pv, op, darg));
272+
}
273+
243274
const char *
244275
BAN_AddTest(struct ban_proto *bp,
245276
const char *a1, const char *a2, const char *a3)
246277
{
247278
const struct pvar *pv;
248-
double darg;
249-
uint64_t dtmp;
250-
uint8_t denc[sizeof darg];
251279
int op;
252280

253281
CHECK_OBJ_NOTNULL(bp, BAN_PROTO_MAGIC);
@@ -290,23 +318,8 @@ BAN_AddTest(struct ban_proto *bp,
290318

291319
if ((pv->flag & BANS_FLAG_DURATION) == 0)
292320
return (ban_add_spec(bp, pv, op, a3));
293-
294-
assert(pv->flag & BANS_FLAG_DURATION);
295-
assert(BANS_HAS_ARG2_DOUBLE(pv->tag));
296-
darg = VNUM_duration(a3);
297-
if (isnan(darg)) {
298-
return (ban_error(bp,
299-
"expected duration <n.nn>[ms|s|m|h|d|w|y] got \"%s\"", a3));
300-
}
301-
302-
assert(sizeof darg == sizeof dtmp);
303-
assert(sizeof dtmp == sizeof denc);
304-
memcpy(&dtmp, &darg, sizeof dtmp);
305-
vbe64enc(denc, dtmp);
306-
307-
ban_add_lump(bp, denc, sizeof denc);
308-
VSB_putc(bp->vsb, op);
309-
return (NULL);
321+
else
322+
return (ban_add_duration(bp, pv, op, a3));
310323
}
311324

312325
/*--------------------------------------------------------------------

0 commit comments

Comments
 (0)