check lone surrogate (compatible with utf8.js v2.1.0)

This commit is contained in:
nkzawa
2015-10-11 01:10:06 +09:00
parent 0974154181
commit 45977f1a90
8 changed files with 88 additions and 47 deletions

View File

@@ -5,6 +5,7 @@ import io.socket.emitter.Emitter;
import io.socket.engineio.parser.Packet;
import io.socket.engineio.parser.Parser;
import io.socket.thread.EventThread;
import io.socket.utf8.UTF8Exception;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
@@ -98,7 +99,11 @@ public abstract class Transport extends Emitter {
@Override
public void run() {
if (Transport.this.readyState == ReadyState.OPEN) {
Transport.this.write(packets);
try {
Transport.this.write(packets);
} catch (UTF8Exception err) {
throw new RuntimeException(err);
}
} else {
throw new RuntimeException("Transport not open");
}
@@ -129,7 +134,7 @@ public abstract class Transport extends Emitter {
this.emit(EVENT_CLOSE);
}
abstract protected void write(Packet[] packets);
abstract protected void write(Packet[] packets) throws UTF8Exception;
abstract protected void doOpen();

View File

@@ -7,6 +7,7 @@ import io.socket.engineio.parser.Parser;
import io.socket.parseqs.ParseQS;
import io.socket.thread.EventThread;
import io.socket.emitter.Emitter;
import io.socket.utf8.UTF8Exception;
import java.util.Date;
import java.util.HashMap;
@@ -152,7 +153,11 @@ abstract public class Polling extends Transport {
@Override
public void call(Object... args) {
logger.fine("writing close packet");
self.write(new Packet[] {new Packet(Packet.CLOSE)});
try {
self.write(new Packet[]{new Packet(Packet.CLOSE)});
} catch (UTF8Exception err) {
throw new RuntimeException(err);
}
}
};
@@ -167,7 +172,7 @@ abstract public class Polling extends Transport {
}
}
protected void write(Packet[] packets) {
protected void write(Packet[] packets) throws UTF8Exception {
final Polling self = this;
this.writable = false;
final Runnable callbackfn = new Runnable() {

View File

@@ -12,6 +12,7 @@ import com.squareup.okhttp.Response;
import com.squareup.okhttp.ws.WebSocket.PayloadType;
import com.squareup.okhttp.ws.WebSocketCall;
import com.squareup.okhttp.ws.WebSocketListener;
import io.socket.utf8.UTF8Exception;
import okio.Buffer;
import okio.BufferedSource;
@@ -142,7 +143,7 @@ public class WebSocket extends Transport {
client.getDispatcher().getExecutorService().shutdown();
}
protected void write(Packet[] packets) {
protected void write(Packet[] packets) throws UTF8Exception {
final WebSocket self = this;
this.writable = false;
for (Packet packet : packets) {