headers should be case insensive

This commit is contained in:
Naoyuki Kanezawa
2014-02-02 22:42:17 +09:00
parent 139dd685e4
commit 3cb02a6151
2 changed files with 10 additions and 13 deletions

View File

@@ -7,8 +7,8 @@ import com.github.nkzawa.engineio.client.EventThread;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.logging.Logger;
@@ -41,10 +41,7 @@ public class PollingXHR extends Polling {
@Override
public void call(Object... args) {
// Never execute asynchronously for support to modify headers.
@SuppressWarnings("unchecked")
Map<String, String> headers = args.length > 0 && args[0] instanceof Map ?
(Map<String, String>)args[0] : new HashMap<String, String>();
self.emit(EVENT_REQUEST_HEADERS, headers);
self.emit(EVENT_REQUEST_HEADERS, args[0]);
}
}).on(Request.EVENT_RESPONSE_HEADERS, new Listener() {
@Override
@@ -52,10 +49,7 @@ public class PollingXHR extends Polling {
EventThread.exec(new Runnable() {
@Override
public void run() {
@SuppressWarnings("unchecked")
final Map<String, String> headers = args.length > 0 && args[0] instanceof Map ?
(Map<String, String>)args[0] : new HashMap<String, String>();
self.emit(EVENT_RESPONSE_HEADERS, headers);
self.emit(EVENT_RESPONSE_HEADERS, args[0]);
}
});
}
@@ -161,7 +155,7 @@ public class PollingXHR extends Polling {
return;
}
Map<String, String> headers = new HashMap<String, String>();
Map<String, String> headers = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
if ("POST".equals(this.method)) {
xhr.setDoOutput(true);
@@ -188,8 +182,9 @@ public class PollingXHR extends Polling {
writer.flush();
}
Map<String, String> headers = new HashMap<String, String>();
Map<String, String> headers = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
for (String key : xhr.getHeaderFields().keySet()) {
if (key == null) continue;
headers.put(key, xhr.getHeaderField(key));
}
self.onResponseHeaders(headers);

View File

@@ -16,6 +16,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
public class WebSocket extends Transport {
@@ -34,7 +35,7 @@ public class WebSocket extends Transport {
return;
}
Map<String, String> headers = new HashMap<String, String>();
Map<String, String> headers = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
this.emit(EVENT_REQUEST_HEADERS, headers);
final WebSocket self = this;
@@ -45,10 +46,11 @@ public class WebSocket extends Transport {
EventThread.exec(new Runnable() {
@Override
public void run() {
Map<String, String> headers = new HashMap<String, String>();
Map<String, String> headers = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
Iterator<String> it = serverHandshake.iterateHttpFields();
while (it.hasNext()) {
String field = it.next();
if (field == null) continue;
headers.put(field, serverHandshake.getFieldValue(field));
}
self.emit(EVENT_RESPONSE_HEADERS, headers);