Skip to content

Commit

Permalink
Avoid manipulating netty's Via header list
Browse files Browse the repository at this point in the history
  • Loading branch information
jekh committed Sep 6, 2015
1 parent 33f1431 commit 71a5b01
Showing 1 changed file with 13 additions and 9 deletions.
22 changes: 13 additions & 9 deletions src/main/java/org/littleshoot/proxy/impl/ProxyUtils.java
Expand Up @@ -21,6 +21,7 @@
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
Expand Down Expand Up @@ -247,20 +248,23 @@ public static HttpResponse copyMutableResponseFields(
* @param alias the alias to provide in the Via header for this proxy
*/
public static void addVia(HttpMessage httpMessage, String alias) {
final StringBuilder sb = new StringBuilder();
sb.append(httpMessage.getProtocolVersion().majorVersion());
sb.append('.');
sb.append(httpMessage.getProtocolVersion().minorVersion());
sb.append(' ');
sb.append(alias);
String newViaHeader = new StringBuilder()
.append(httpMessage.getProtocolVersion().majorVersion())
.append('.')
.append(httpMessage.getProtocolVersion().minorVersion())
.append(' ')
.append(alias)
.toString();

final List<String> vias;
if (httpMessage.headers().contains(HttpHeaders.Names.VIA)) {
vias = httpMessage.headers().getAll(HttpHeaders.Names.VIA);
vias.add(sb.toString());
List<String> existingViaHeaders = httpMessage.headers().getAll(HttpHeaders.Names.VIA);
vias = new ArrayList<String>(existingViaHeaders);
vias.add(newViaHeader);
} else {
vias = Collections.singletonList(sb.toString());
vias = Collections.singletonList(newViaHeader);
}

httpMessage.headers().set(HttpHeaders.Names.VIA, vias);
}

Expand Down

0 comments on commit 71a5b01

Please sign in to comment.