int http_replace_req_uri(struct htx *htx, const struct ist uri);
int http_replace_req_path(struct htx *htx, const struct ist path, int with_qs);
int http_replace_req_query(struct htx *htx, const struct ist query);
-int http_replace_res_status(struct htx *htx, const struct ist status);
+int http_replace_res_status(struct htx *htx, const struct ist status, const struct ist reason);
int http_replace_res_reason(struct htx *htx, const struct ist reason);
int http_replace_header_value(struct htx *htx, struct http_hdr_ctx *ctx, const struct ist data);
int http_replace_header(struct htx *htx, struct http_hdr_ctx *ctx, const struct ist name, const struct ist value);
reason = ist2(str, strlen(str));
}
- if (!http_replace_res_status(htx, ist2(trash.area, trash.data)))
- return -1;
- if (!http_replace_res_reason(htx, reason))
+ if (!http_replace_res_status(htx, ist2(trash.area, trash.data), reason))
return -1;
return 0;
}
/* Replace the response status in the HTX message <htx> by <status>. It returns
* 1 on success, otherwise 0.
*/
-int http_replace_res_status(struct htx *htx, const struct ist status)
+int http_replace_res_status(struct htx *htx, const struct ist status, const struct ist reason)
{
struct buffer *temp = get_trash_chunk();
struct htx_sl *sl = http_get_stline(htx);
- struct ist vsn, reason;
+ struct ist vsn, r;
if (!sl)
return 0;
/* Start by copying old uri and version */
chunk_memcat(temp, HTX_SL_RES_VPTR(sl), HTX_SL_RES_VLEN(sl)); /* vsn */
vsn = ist2(temp->area, HTX_SL_RES_VLEN(sl));
-
- chunk_memcat(temp, HTX_SL_RES_RPTR(sl), HTX_SL_RES_RLEN(sl)); /* reason */
- reason = ist2(temp->area + vsn.len, HTX_SL_RES_RLEN(sl));
+ r = reason;
+ if (!isttest(r)) {
+ chunk_memcat(temp, HTX_SL_RES_RPTR(sl), HTX_SL_RES_RLEN(sl)); /* reason */
+ r = ist2(temp->area + vsn.len, HTX_SL_RES_RLEN(sl));
+ }
/* create the new start line */
sl->info.res.status = strl2ui(status.ptr, status.len);
- return http_replace_stline(htx, vsn, status, reason);
+ return http_replace_stline(htx, vsn, status, r);
}
/* Replace the response reason in the HTX message <htx> by <reason>. It returns