From aa334c22083f687a9219babc9a7e27090ca44e4e Mon Sep 17 00:00:00 2001 From: benno Date: Sat, 12 Jul 2014 15:47:18 +0000 Subject: [PATCH] fix relay "append header" action, add regression test for append ok reyk --- .../relayd/args-http-append-header.pl | 40 +++++++++++++++++++ usr.sbin/relayd/relay_http.c | 9 ++--- 2 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 regress/usr.sbin/relayd/args-http-append-header.pl diff --git a/regress/usr.sbin/relayd/args-http-append-header.pl b/regress/usr.sbin/relayd/args-http-append-header.pl new file mode 100644 index 00000000000..f7344458ec6 --- /dev/null +++ b/regress/usr.sbin/relayd/args-http-append-header.pl @@ -0,0 +1,40 @@ +# test appending headers, both directions + +use strict; +use warnings; + +my %header_client = ( + "X-Header-Client" => "ABC", +); +my %header_server = ( + "X-Header-Server" => "XYZ", +); +our %args = ( + client => { + func => \&http_client, + header => \%header_client, + loggrep => { + "X-Header-Server: XYZ" => 1, + "X-Header-Server: xyz" => 1, + }, + }, + relayd => { + protocol => [ "http", + 'match request header append "X-Header-Client" value "abc"', + 'match response header append "X-Header-Server" value "xyz"', + 'match request header log "X-Header*"', + 'match response header log "X-Header*"', + ], + loggrep => { qr/ (?:done|last write \(done\)), \[X-Header-Client: ABC\]\ \[X-Header-Server: XYZ\]/ => 1 }, + }, + server => { + func => \&http_server, + header => \%header_server, + loggrep => { + "X-Header-Client: ABC" => 1, + "X-Header-Client: abc" => 1, + }, + }, +); + +1; diff --git a/usr.sbin/relayd/relay_http.c b/usr.sbin/relayd/relay_http.c index 4928fcf445e..9e30487d525 100644 --- a/usr.sbin/relayd/relay_http.c +++ b/usr.sbin/relayd/relay_http.c @@ -1,4 +1,4 @@ -/* $OpenBSD: relay_http.c,v 1.26 2014/07/12 14:34:13 reyk Exp $ */ +/* $OpenBSD: relay_http.c,v 1.27 2014/07/12 15:47:18 benno Exp $ */ /* * Copyright (c) 2006 - 2014 Reyk Floeter @@ -1437,11 +1437,8 @@ relay_apply_actions(struct ctl_relay_event *cre, struct kvlist *actions) if (kv_set(match, "%s", kv->kv_value) == -1) goto fail; - } else { - if (kv_setkey(match, "%s,%s", - match->kv_key, kv->kv_key) == -1) - goto fail; - } + } else + addkv = 1; break; default: /* query, url not supported */ -- 2.20.1