ETag.cc
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9#include "squid.h"
10#include "ETag.h"
11
12#include <cstring>
13
14/*
15 * Note: ETag is not an http "field" like, for example HttpHdrRange. ETag is a
16 * field-value that maybe used in many http fields.
17 */
18
20static bool
21etagStringsMatch(const ETag &tag1, const ETag &tag2)
22{
23 return !strcmp(tag1.str, tag2.str);
24}
25
26/* parses a string as weak or strong entity-tag; returns true on success */
27/* note: we do not duplicate "str"! */
28int
29etagParseInit(ETag * etag, const char *str)
30{
31 int len;
32 assert(etag && str);
33 etag->str = nullptr;
34 etag->weak = !strncmp(str, "W/", 2);
35
36 if (etag->weak)
37 str += 2;
38
39 /* check format (quoted-string) */
40 len = strlen(str);
41
42 if (len >= 2 && str[0] == '"' && str[len - 1] == '"')
43 etag->str = str;
44
45 return etag->str != nullptr;
46}
47
48bool
49etagIsStrongEqual(const ETag &tag1, const ETag &tag2)
50{
51 return !tag1.weak && !tag2.weak && etagStringsMatch(tag1, tag2);
52}
53
54bool
55etagIsWeakEqual(const ETag &tag1, const ETag &tag2)
56{
57 return etagStringsMatch(tag1, tag2);
58}
59
bool etagIsWeakEqual(const ETag &tag1, const ETag &tag2)
whether etags are weak-equal
Definition: ETag.cc:55
int etagParseInit(ETag *etag, const char *str)
Definition: ETag.cc:29
static bool etagStringsMatch(const ETag &tag1, const ETag &tag2)
whether etag strings match
Definition: ETag.cc:21
bool etagIsStrongEqual(const ETag &tag1, const ETag &tag2)
whether etags are strong-equal
Definition: ETag.cc:49
#define assert(EX)
Definition: assert.h:17
Definition: ETag.h:18
int weak
true if it is a weak validator
Definition: ETag.h:21
const char * str
quoted-string
Definition: ETag.h:20

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors