diff options
author | Bjørn Christian Seime <bjorncs@oath.com> | 2018-06-06 14:28:41 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@oath.com> | 2018-06-06 14:32:33 +0200 |
commit | f80c9fb2b21c37685d2730b52cc5b248d6ef8e07 (patch) | |
tree | 8afb1eaa1409d25a8a073ff8bebf755eb869ed8b | |
parent | 5aa2753b3df30d931b96457f49aaeebc6b43c02a (diff) |
Use apache header parser + improve error handling of invalid headers
-rw-r--r-- | vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java index a159d277e1a..84d3b320772 100644 --- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java +++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java @@ -11,8 +11,11 @@ import io.airlift.command.Command; import io.airlift.command.HelpOption; import io.airlift.command.Option; import io.airlift.command.SingleCommand; +import org.apache.http.Header; +import org.apache.http.ParseException; import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.message.BasicLineParser; import javax.inject.Inject; import java.util.ArrayList; @@ -55,6 +58,15 @@ public class CommandLineArguments { return null; } + for (String header : cmdArgs.headers) { + try { + cmdArgs.parsedHeaders.add(BasicLineParser.parseHeader(header, null)); + } catch (ParseException e) { + System.err.printf("Invalid header: '%s' (%s)%n", header, e.getMessage()); + return null; + } + } + return cmdArgs; } @@ -186,6 +198,8 @@ public class CommandLineArguments { description = "Add http header to every request. Header must have the format '<Name>: <Value>'. Use this parameter multiple times for multiple headers") private List<String> headers = new ArrayList<>(); + private final List<Header> parsedHeaders = new ArrayList<>(); + int getWhenVerboseEnabledPrintMessageForEveryXDocuments() { return whenVerboseEnabledPrintMessageForEveryXDocuments; } @@ -199,10 +213,7 @@ public class CommandLineArguments { SessionParams createSessionParams(boolean useJson) { final int minThrottleValue = useDynamicThrottlingArg ? 10 : 0; ConnectionParams.Builder connectionParamsBuilder = new ConnectionParams.Builder(); - for (String header : headers) { - String[] nameAndValue = header.split(":"); - connectionParamsBuilder.addHeader(nameAndValue[0].trim(), nameAndValue[1].trim()); - } + parsedHeaders.forEach(header -> connectionParamsBuilder.addHeader(header.getName(), header.getValue())); SessionParams.Builder builder = new SessionParams.Builder() .setFeedParams( new FeedParams.Builder() |