MCPcopy Create free account
hub / github.com/OpenListTeam/OpenList / parseTimeout

Function parseTimeout

server/webdav/lock.go:421–445  ·  view source on GitHub ↗

parseTimeout parses the Timeout HTTP header, as per section 10.7. If s is empty, an infiniteTimeout is returned.

(s string)

Source from the content-addressed store, hash-verified

419// parseTimeout parses the Timeout HTTP header, as per section 10.7. If s is
420// empty, an infiniteTimeout is returned.
421func parseTimeout(s string) (time.Duration, error) {
422 if s == "" {
423 return infiniteTimeout, nil
424 }
425 if i := strings.IndexByte(s, ','); i >= 0 {
426 s = s[:i]
427 }
428 s = strings.TrimSpace(s)
429 if s == "Infinite" {
430 return infiniteTimeout, nil
431 }
432 const pre = "Second-"
433 if !strings.HasPrefix(s, pre) {
434 return 0, errInvalidTimeout
435 }
436 s = s[len(pre):]
437 if s == "" || s[0] < '0' || '9' < s[0] {
438 return 0, errInvalidTimeout
439 }
440 n, err := strconv.ParseInt(s, 10, 64)
441 if err != nil || 1<<32-1 < n {
442 return 0, errInvalidTimeout
443 }
444 return time.Duration(n) * time.Second, nil
445}

Callers 2

handleLockMethod · 0.85
TestParseTimeoutFunction · 0.85

Calls

no outgoing calls

Tested by 1

TestParseTimeoutFunction · 0.68