]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: http/htx: Use sl_pos directly to replace the start-line
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 13 May 2019 13:22:59 +0000 (15:22 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 28 May 2019 05:42:12 +0000 (07:42 +0200)
Since the HTX start-line is now referenced by position instead of by its payload
address, it is fairly easier to replace it. No need to search the rigth block to
find the start-line comparing the payloads address. It just enough to get the
block at the position sl_pos.

src/http_htx.c

index e55420c4073fe8edb265801a17c781f696720362..8099071d4ff4940fc868c847da390db1ee4168bb 100644 (file)
@@ -174,23 +174,15 @@ int http_add_header(struct htx *htx, const struct ist n, const struct ist v)
  */
 int http_replace_stline(struct htx *htx, const struct ist p1, const struct ist p2, const struct ist p3)
 {
-       int32_t pos;
-
-       for (pos = htx_get_head(htx); pos != -1; pos = htx_get_next(htx, pos)) {
-               struct htx_blk *blk = htx_get_blk(htx, pos);
-               enum htx_blk_type type = htx_get_blk_type(blk);
-
-               if (htx->sl_pos == pos) {
-                       if (!htx_replace_stline(htx, blk, p1, p2, p3))
-                               return 0;
-                       return 1;
-               }
+       struct htx_blk *blk;
 
-               if (type == HTX_BLK_EOM)
-                       break;
-       }
+       if (htx->sl_pos == -1)
+               return 0;
 
-       return 0;
+       blk = htx_get_blk(htx, htx->sl_pos);
+       if (!htx_replace_stline(htx, blk, p1, p2, p3))
+               return 0;
+       return 1;
 }
 
 /* Replace the request method in the HTX message <htx> by <meth>. It returns 1