Skip to content

Commit bd82e3d

Browse files
committed
mutate rest throughout rules
1 parent 959e4bd commit bd82e3d

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

rulesengine/rules.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -178,15 +178,17 @@ func isHTTPTokenChar(c byte) bool {
178178
// Represents a valid host.
179179
// https://datatracker.ietf.org/doc/html/rfc952
180180
// https://datatracker.ietf.org/doc/html/rfc1123#page-13
181-
func parseHostPattern(input string) (host []labelPattern, rest string, err error) {
182-
rest = input
183-
var label labelPattern
181+
func parseHostPattern(input string) ([]labelPattern, string, error) {
182+
rest := input
183+
var host []labelPattern
184+
var err error
184185

185186
if input == "" {
186187
return nil, "", errors.New("expected host, got empty string")
187188
}
188189

189190
// There should be at least one label.
191+
var label labelPattern
190192
label, rest, err = parseLabelPattern(rest)
191193
if err != nil {
192194
return nil, "", err
@@ -271,8 +273,9 @@ func parsePathPattern(input string) ([]segmentPattern, string, error) {
271273
return nil, "", nil
272274
}
273275

274-
var segments []segmentPattern
275276
rest := input
277+
var segments []segmentPattern
278+
var err error
276279

277280
// If the path doesn't start with '/', it's not a valid absolute path
278281
// But we'll be flexible and parse relative paths too
@@ -288,19 +291,19 @@ func parsePathPattern(input string) ([]segmentPattern, string, error) {
288291
}
289292

290293
// Parse the next segment
291-
seg, remaining, err := parsePathSegmentPattern(rest)
294+
var segment segmentPattern
295+
segment, rest, err = parsePathSegmentPattern(rest)
292296
if err != nil {
293297
return nil, "", err
294298
}
295299

296300
// If we got an empty segment and there's still input,
297301
// it means we hit an invalid character
298-
if seg == "" && remaining != "" {
302+
if segment == "" && rest != "" {
299303
break
300304
}
301305

302-
segments = append(segments, seg)
303-
rest = remaining
306+
segments = append(segments, segment)
304307

305308
// If there's no slash after the segment, we're done parsing the path
306309
if rest == "" || rest[0] != '/' {

0 commit comments

Comments
 (0)