summaryrefslogtreecommitdiffstats
path: root/vespa-http-client/src
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@oath.com>2018-06-06 14:28:41 +0200
committerBjørn Christian Seime <bjorncs@oath.com>2018-06-06 14:32:33 +0200
commitf80c9fb2b21c37685d2730b52cc5b248d6ef8e07 (patch)
tree8afb1eaa1409d25a8a073ff8bebf755eb869ed8b /vespa-http-client/src
parent5aa2753b3df30d931b96457f49aaeebc6b43c02a (diff)
Use apache header parser + improve error handling of invalid headers
Diffstat (limited to 'vespa-http-client/src')
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java19
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()