Merge branch '16265-security-updates' into dependabot/bundler/apps/workbench/loofah...
[arvados.git] / sdk / go / httpserver / id_generator.go
index d2c3a41f2108e2bc852f56119b747a7ec9423e7a..14d89873b60f7d902a39a6b337eea78e8040d0c3 100644 (file)
@@ -12,6 +12,10 @@ import (
        "time"
 )
 
+const (
+       HeaderRequestID = "X-Request-Id"
+)
+
 // IDGenerator generates alphanumeric strings suitable for use as
 // unique IDs (a given IDGenerator will never return the same ID
 // twice).
@@ -44,8 +48,11 @@ func (g *IDGenerator) Next() string {
 func AddRequestIDs(h http.Handler) http.Handler {
        gen := &IDGenerator{Prefix: "req-"}
        return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
-               if req.Header.Get("X-Request-Id") == "" {
-                       req.Header.Set("X-Request-Id", gen.Next())
+               if req.Header.Get(HeaderRequestID) == "" {
+                       if req.Header == nil {
+                               req.Header = http.Header{}
+                       }
+                       req.Header.Set(HeaderRequestID, gen.Next())
                }
                h.ServeHTTP(w, req)
        })