private void acceptConnections() throws Exception { while (true) { Socket socket; try { socket = serverSocket.accept(); } catch (SocketException e) { logger.info(MockWebServer.this + " done accepting connections: " + e.getMessage()); return; } SocketPolicy socketPolicy = dispatcher.peek().getSocketPolicy(); if (socketPolicy == DISCONNECT_AT_START) { dispatchBookkeepingRequest(0, socket); socket.close(); } else { openClientSockets.add(socket); serveConnection(socket); } } } });
if (response.getSocketPolicy() == DISCONNECT_AFTER_REQUEST) { socket.close(); return false; if (response.getSocketPolicy() == NO_RESPONSE) { if (response.getSocketPolicy() == DISCONNECT_AT_END) { socket.close(); return false; } else if (response.getSocketPolicy() == SHUTDOWN_INPUT_AT_END) { socket.shutdownInput(); } else if (response.getSocketPolicy() == SHUTDOWN_OUTPUT_AT_END) { socket.shutdownOutput(); } else if (response.getSocketPolicy() == SHUTDOWN_SERVER_AFTER_RESPONSE) { shutdown();
/** * Respond to CONNECT requests until a SWITCH_TO_SSL_AT_END response is * dispatched. */ private void createTunnel() throws IOException, InterruptedException { BufferedSource source = Okio.buffer(Okio.source(raw)); BufferedSink sink = Okio.buffer(Okio.sink(raw)); while (true) { SocketPolicy socketPolicy = dispatcher.peek().getSocketPolicy(); if (!processOneRequest(raw, source, sink)) { throw new IllegalStateException("Tunnel without any CONNECT!"); } if (socketPolicy == UPGRADE_TO_SSL_AT_END) return; } }
? policy.getSocketPolicy() == DISCONNECT_DURING_REQUEST_BODY : policy.getSocketPolicy() == DISCONNECT_DURING_RESPONSE_BODY;
@Override public void onStream(Http2Stream stream) throws IOException { MockResponse peekedResponse = dispatcher.peek(); if (peekedResponse.getSocketPolicy() == RESET_STREAM_AT_START) { try { dispatchBookkeepingRequest(sequenceNumber.getAndIncrement(), socket); throw new AssertionError(e); if (response.getSocketPolicy() == DISCONNECT_AFTER_REQUEST) { socket.close(); return; if (response.getSocketPolicy() == DISCONNECT_AT_END) { Http2Connection connection = stream.getConnection(); connection.shutdown(ErrorCode.NO_ERROR);
final SocketPolicy socketPolicy = dispatcher.peek().getSocketPolicy(); if (expectContinue && socketPolicy == EXPECT_CONTINUE || socketPolicy == CONTINUE_ALWAYS) { sink.writeUtf8("HTTP/1.1 100 Continue\r\n");
public void processConnection() throws Exception { SocketPolicy socketPolicy = dispatcher.peek().getSocketPolicy(); Protocol protocol = Protocol.HTTP_1_1; Socket socket;
if (peek.isDuplex()) { readBody = false; } else if (!readBody && peek.getSocketPolicy() == EXPECT_CONTINUE) { List<Header> continueHeaders = Collections.singletonList( new Header(Header.RESPONSE_STATUS, ByteString.encodeUtf8("100 Continue")));
if (response.getSocketPolicy() == NO_RESPONSE) { return;
private void acceptConnections() throws Exception { while (true) { Socket socket; try { socket = serverSocket.accept(); } catch (SocketException e) { logger.info(MockWebServer.this + " done accepting connections: " + e.getMessage()); return; } SocketPolicy socketPolicy = dispatcher.peek().getSocketPolicy(); if (socketPolicy == DISCONNECT_AT_START) { dispatchBookkeepingRequest(0, socket); socket.close(); } else { openClientSockets.add(socket); serveConnection(socket); } } } });
if (response.getSocketPolicy() == DISCONNECT_AFTER_REQUEST) { socket.close(); return false; if (response.getSocketPolicy() == NO_RESPONSE) { if (response.getSocketPolicy() == DISCONNECT_AT_END) { socket.close(); return false; } else if (response.getSocketPolicy() == SHUTDOWN_INPUT_AT_END) { socket.shutdownInput(); } else if (response.getSocketPolicy() == SHUTDOWN_OUTPUT_AT_END) { socket.shutdownOutput();
/** * Respond to CONNECT requests until a SWITCH_TO_SSL_AT_END response is * dispatched. */ private void createTunnel() throws IOException, InterruptedException { BufferedSource source = Okio.buffer(Okio.source(raw)); BufferedSink sink = Okio.buffer(Okio.sink(raw)); while (true) { SocketPolicy socketPolicy = dispatcher.peek().getSocketPolicy(); if (!processOneRequest(raw, source, sink)) { throw new IllegalStateException("Tunnel without any CONNECT!"); } if (socketPolicy == UPGRADE_TO_SSL_AT_END) return; } }
? policy.getSocketPolicy() == DISCONNECT_DURING_REQUEST_BODY : policy.getSocketPolicy() == DISCONNECT_DURING_RESPONSE_BODY;
@Override public void onStream(Http2Stream stream) throws IOException { MockResponse peekedResponse = dispatcher.peek(); if (peekedResponse.getSocketPolicy() == RESET_STREAM_AT_START) { try { dispatchBookkeepingRequest(sequenceNumber.getAndIncrement(), socket); throw new AssertionError(e); if (response.getSocketPolicy() == DISCONNECT_AFTER_REQUEST) { socket.close(); return; if (response.getSocketPolicy() == DISCONNECT_AT_END) { Http2Connection connection = stream.getConnection(); connection.shutdown(ErrorCode.NO_ERROR);
if (expectContinue && dispatcher.peek().getSocketPolicy() == EXPECT_CONTINUE) { sink.writeUtf8("HTTP/1.1 100 Continue\r\n"); sink.writeUtf8("Content-Length: 0\r\n");
createTunnel(); SocketPolicy socketPolicy = dispatcher.peek().getSocketPolicy(); if (socketPolicy == FAIL_HANDSHAKE) { dispatchBookkeepingRequest(sequenceNumber, raw);
if (!readBody && peek.getSocketPolicy() == EXPECT_CONTINUE) { stream.sendResponseHeaders(Collections.singletonList( new Header(Header.RESPONSE_STATUS, ByteString.encodeUtf8("100 Continue"))), true);
@Test public void enqueueSocketPolicy() throws IOException { server.enqueue(SocketPolicy.KEEP_OPEN); QueueDispatcher dispatcher = new QueueDispatcher(); server.setDispatcher(dispatcher); MockResponse mockResponse = dispatcher.peek(); assertThat(mockResponse.getSocketPolicy()).isEqualTo(SocketPolicy.KEEP_OPEN); }
if (response.getSocketPolicy() == NO_RESPONSE) { return;