]> granicus.if.org Git - apache/commitdiff
added inlined string concatenation to form_header_field() for speed
authorBrian Pane <brianp@apache.org>
Thu, 22 Nov 2001 21:04:28 +0000 (21:04 +0000)
committerBrian Pane <brianp@apache.org>
Thu, 22 Nov 2001 21:04:28 +0000 (21:04 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92137 13f79535-47bb-0310-9956-ffa450edef68

modules/http/http_protocol.c

index 294a8d2537ed372bd411e79f72efb73548ada9cf..450de1bc5f12a5b76a06e9a9669a651cca686029 100644 (file)
@@ -749,9 +749,23 @@ static int form_header_field(header_struct *h,
 {
     char *headfield;
     apr_size_t len;
-
-    headfield = apr_pstrcat(h->pool, fieldname, ": ", fieldval, CRLF, NULL);
-    len = strlen(headfield);
+    apr_size_t name_len;
+    apr_size_t val_len;
+    char *next;
+
+    name_len = strlen(fieldname);
+    val_len = strlen(fieldval);
+    len = name_len + val_len + 4; /* 4 for ": " plus CRLF */
+    headfield = (char *)apr_palloc(h->pool, len + 1);
+    memcpy(headfield, fieldname, name_len);
+    next = headfield + name_len;
+    *next++ = ':';
+    *next++ = ' ';
+    memcpy(next, fieldval, val_len);
+    next += val_len;
+    *next++ = CR;
+    *next++ = LF;
+    *next = 0;
     ap_xlate_proto_to_ascii(headfield, len);
     apr_brigade_write(h->bb, NULL, NULL, headfield, len);
     return 1;