From 8e6f6ffda94d28620e5e25a43745679c5ee15653 Mon Sep 17 00:00:00 2001 From: Ta-Ching Chen Date: Thu, 20 Dec 2018 17:23:26 +0800 Subject: [PATCH] Use Header.Set() to override the existing header value (#1032) Header.Add() appends string if there are same header key exists. Use Header.Set() to prevent this. --- builder/builder.go | 2 +- environments/fetcher/fetcher.go | 2 +- mqtrigger/messageQueue/asq.go | 8 ++++---- mqtrigger/messageQueue/kafka.go | 2 +- mqtrigger/messageQueue/nats.go | 2 +- publisher/webhookPublisher.go | 2 +- redis/redisApi.go | 2 +- router/functionHandler.go | 4 ++-- router/util.go | 8 ++++---- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/builder/builder.go b/builder/builder.go index 7eaa66a4..df5b8664 100644 --- a/builder/builder.go +++ b/builder/builder.go @@ -142,7 +142,7 @@ func (builder *Builder) reply(w http.ResponseWriter, pkgFilename string, buildLo statusCode = http.StatusInternalServerError } - w.Header().Add("Content-Type", "application/json") + w.Header().Set("Content-Type", "application/json") // should write header before writing the body, // or client will receive HTTP 200 regardless the real status code w.WriteHeader(statusCode) diff --git a/environments/fetcher/fetcher.go b/environments/fetcher/fetcher.go index c3a52821..aa2bf64e 100644 --- a/environments/fetcher/fetcher.go +++ b/environments/fetcher/fetcher.go @@ -482,7 +482,7 @@ func (fetcher *Fetcher) UploadHandler(w http.ResponseWriter, r *http.Request) { } log.Println("Completed upload request") - w.Header().Add("Content-Type", "application/json") + w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusOK) w.Write(rBody) } diff --git a/mqtrigger/messageQueue/asq.go b/mqtrigger/messageQueue/asq.go index b10de613..d5c54acf 100644 --- a/mqtrigger/messageQueue/asq.go +++ b/mqtrigger/messageQueue/asq.go @@ -313,14 +313,14 @@ func invokeTriggeredFunction(conn AzureStorageConnection, sub *AzureQueueSubscri continue } - request.Header.Add("X-Fission-MQTrigger-Topic", sub.queueName) + request.Header.Set("X-Fission-MQTrigger-Topic", sub.queueName) if len(sub.outputQueueName) > 0 { - request.Header.Add("X-Fission-MQTrigger-RespTopic", sub.outputQueueName) + request.Header.Set("X-Fission-MQTrigger-RespTopic", sub.outputQueueName) } if i > 0 { - request.Header.Add("X-Fission-MQTrigger-RetryCount", strconv.Itoa(i)) + request.Header.Set("X-Fission-MQTrigger-RetryCount", strconv.Itoa(i)) } - request.Header.Add("Content-Type", sub.contentType) + request.Header.Set("Content-Type", sub.contentType) response, err := conn.httpClient.Do(request) if err != nil { diff --git a/mqtrigger/messageQueue/kafka.go b/mqtrigger/messageQueue/kafka.go index 47b08ffa..018a589f 100644 --- a/mqtrigger/messageQueue/kafka.go +++ b/mqtrigger/messageQueue/kafka.go @@ -133,7 +133,7 @@ func kafkaMsgHandler(kafka *Kafka, producer sarama.SyncProducer, trigger *crd.Me } for k, v := range headers { - req.Header.Add(k, v) + req.Header.Set(k, v) } // Make the request var resp *http.Response diff --git a/mqtrigger/messageQueue/nats.go b/mqtrigger/messageQueue/nats.go index 4e36df4a..2721cc2f 100644 --- a/mqtrigger/messageQueue/nats.go +++ b/mqtrigger/messageQueue/nats.go @@ -122,7 +122,7 @@ func msgHandler(nats *Nats, trigger *crd.MessageQueueTrigger) func(*ns.Msg) { } for k, v := range headers { - req.Header.Add(k, v) + req.Header.Set(k, v) } var resp *http.Response diff --git a/publisher/webhookPublisher.go b/publisher/webhookPublisher.go index 09a75d72..7072aca3 100644 --- a/publisher/webhookPublisher.go +++ b/publisher/webhookPublisher.go @@ -84,7 +84,7 @@ func (p *WebhookPublisher) makeHttpRequest(r *publishRequest) { // Create request req, err := http.NewRequest("POST", url, &buf) for k, v := range r.headers { - req.Header.Add(k, v) + req.Header.Set(k, v) } // Make the request diff --git a/redis/redisApi.go b/redis/redisApi.go index c404f88a..95539031 100644 --- a/redis/redisApi.go +++ b/redis/redisApi.go @@ -401,7 +401,7 @@ func ReplayRequest(routerUrl string, request *redisCache.Request) ([]string, err } } - req.Header.Add("X-Fission-Replayed", "true") + req.Header.Set("X-Fission-Replayed", "true") resp, err := client.Do(req) if err != nil { diff --git a/router/functionHandler.go b/router/functionHandler.go index e94badaf..a905e2c9 100644 --- a/router/functionHandler.go +++ b/router/functionHandler.go @@ -404,14 +404,14 @@ func (fh functionHandler) handler(responseWriter http.ResponseWriter, request *h // retrieve url params and add them to request header vars := mux.Vars(request) for k, v := range vars { - request.Header.Add(fmt.Sprintf("X-Fission-Params-%v", k), v) + request.Header.Set(fmt.Sprintf("X-Fission-Params-%v", k), v) } var reqUID string if len(fh.recorderName) > 0 { UID := strings.ToLower(uuid.NewV4().String()) reqUID = "REQ" + UID - request.Header.Add("X-Fission-ReqUID", reqUID) + request.Header.Set("X-Fission-ReqUID", reqUID) log.Print("Record request with ReqUID: ", reqUID) } diff --git a/router/util.go b/router/util.go index 9d8c1b7a..920df3d8 100644 --- a/router/util.go +++ b/router/util.go @@ -13,10 +13,10 @@ const ( ) func MetadataToHeaders(prefix string, meta *metav1.ObjectMeta, request *http.Request) { - request.Header.Add(fmt.Sprintf("X-%s-Uid", prefix), string(meta.UID)) - request.Header.Add(fmt.Sprintf("X-%s-Name", prefix), meta.Name) - request.Header.Add(fmt.Sprintf("X-%s-Namespace", prefix), meta.Namespace) - request.Header.Add(fmt.Sprintf("X-%s-ResourceVersion", prefix), meta.ResourceVersion) + request.Header.Set(fmt.Sprintf("X-%s-Uid", prefix), string(meta.UID)) + request.Header.Set(fmt.Sprintf("X-%s-Name", prefix), meta.Name) + request.Header.Set(fmt.Sprintf("X-%s-Namespace", prefix), meta.Namespace) + request.Header.Set(fmt.Sprintf("X-%s-ResourceVersion", prefix), meta.ResourceVersion) } func HeadersToMetadata(prefix string, headers http.Header) *metav1.ObjectMeta {