diff --git a/CHANGELOG.md b/CHANGELOG.md index 05a2b4f..bb6b287 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ -## v2.8.0 - TBD +## v2.7.1 - TBD Changes: +- Fix a server error being returned if the optional `high_drift` parameter is not given. ## v2.7.0 - 2024-09-10 diff --git a/main.go b/main.go index 6b1ebfc..49763ea 100644 --- a/main.go +++ b/main.go @@ -101,16 +101,17 @@ func handlerMetrics(w http.ResponseWriter, r *http.Request) { hd := ntpHighDrift if ntpSource == "http" { + query := r.URL.Query() for _, i := range []string{"target", "protocol", "duration"} { - if r.URL.Query().Get(i) == "" { + if query.Get(i) == "" { http.Error(w, "Get parameter is empty: "+i, http.StatusBadRequest) return } } - s = r.URL.Query().Get("target") + s = query.Get("target") - if v, err := strconv.ParseInt(r.URL.Query().Get("protocol"), 10, 32); err != nil { + if v, err := strconv.ParseInt(query.Get("protocol"), 10, 32); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } else if v < 2 || v > 4 { @@ -120,18 +121,20 @@ func handlerMetrics(w http.ResponseWriter, r *http.Request) { p = int(v) } - if t, err := time.ParseDuration(r.URL.Query().Get("duration")); err == nil { + if t, err := time.ParseDuration(query.Get("duration")); err == nil { d = t } else { - http.Error(w, err.Error(), http.StatusBadRequest) + http.Error(w, "while parsing duration: "+err.Error(), http.StatusBadRequest) return } - if u, err := time.ParseDuration(r.URL.Query().Get("high_drift")); err == nil { - hd = u - } else { - http.Error(w, err.Error(), http.StatusBadRequest) - return + if query.Get("high_drift") != "" { + if u, err := time.ParseDuration(query.Get("high_drift")); err == nil { + hd = u + } else { + http.Error(w, "while parsing high_drift: "+err.Error(), http.StatusBadRequest) + return + } } }