changeset 7152:df133f9cc4c9

Merge
author dfuchs
date Thu, 16 May 2013 18:40:47 +0200
parents da203779cb33 d02d1b18d828
children a8be9405bb4b
files
diffstat 4 files changed, 103 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/com/sun/tools/jdi/AbstractLauncher.java	Thu May 16 11:19:00 2013 -0400
+++ b/src/share/classes/com/sun/tools/jdi/AbstractLauncher.java	Thu May 16 18:40:47 2013 +0200
@@ -142,7 +142,7 @@
      * This class simply provides a context for a single launch and
      * accept. It provides instance fields that can be used by
      * all threads involved. This stuff can't be in the Connector proper
-     * because the connector is is a singleton and not specific to any
+     * because the connector is a singleton and is not specific to any
      * one launch.
      */
     private class Helper {
--- a/src/share/classes/com/sun/tools/jdi/SunCommandLineLauncher.java	Thu May 16 11:19:00 2013 -0400
+++ b/src/share/classes/com/sun/tools/jdi/SunCommandLineLauncher.java	Thu May 16 18:40:47 2013 +0200
@@ -213,7 +213,7 @@
                 exePath = exe;
             }
             // Quote only if necessary in case the quote arg value is bogus
-            if (hasWhitespace(exe)) {
+            if (hasWhitespace(exePath)) {
                 exePath = quote + exePath + quote;
             }
 
--- a/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	Thu May 16 11:19:00 2013 -0400
+++ b/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	Thu May 16 18:40:47 2013 +0200
@@ -1225,7 +1225,7 @@
 
             boolean expectContinue = false;
             String expects = requests.findValue("Expect");
-            if ("100-Continue".equalsIgnoreCase(expects)) {
+            if ("100-Continue".equalsIgnoreCase(expects) && streaming()) {
                 http.setIgnoreContinue(false);
                 expectContinue = true;
             }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/net/www/protocol/http/B8012625.java	Thu May 16 18:40:47 2013 +0200
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8012625
+ * @run main B8012625
+ */
+
+import java.net.*;
+import java.io.*;
+
+import java.net.*;
+import java.io.*;
+import java.util.concurrent.*;
+import com.sun.net.httpserver.*;
+
+public class B8012625 implements HttpHandler {
+
+    public static void main (String[] args) throws Exception {
+        B8012625 test = new B8012625();
+        test.run();
+    }
+
+    public void run() throws Exception {
+        String u = "http://127.0.0.1:" + port + "/foo";
+        URL url = new URL(u);
+        HttpURLConnection uc = (HttpURLConnection)url.openConnection();
+        uc.setDoOutput(true);
+        uc.setRequestMethod("POST");
+        uc.addRequestProperty("Expect", "100-Continue");
+        //uc.setFixedLengthStreamingMode(256);
+        System.out.println ("Client: getting outputstream");
+        long before = System.currentTimeMillis();
+        OutputStream os = uc.getOutputStream();
+        long after = System.currentTimeMillis();
+        System.out.println ("Client: writing to outputstream");
+        byte[] buf = new byte[256];
+        os.write(buf);
+        System.out.println ("Client: done writing ");
+        int r = uc.getResponseCode();
+        System.out.println ("Client: received response code " + r);
+        server.stop(1);
+        ex.shutdownNow();
+        if (after - before >= 5000) {
+            throw new RuntimeException("Error: 5 second delay seen");
+        }
+    }
+
+    int port;
+    HttpServer server;
+    ExecutorService ex;
+
+    public B8012625 () throws Exception {
+        server = HttpServer.create(new InetSocketAddress(0), 10);
+        HttpContext ctx = server.createContext("/", this);
+        ex = Executors.newFixedThreadPool(5);
+        server.setExecutor(ex);
+        server.start();
+        port = server.getAddress().getPort();
+   }
+
+    public void handle(HttpExchange ex) throws IOException {
+        String s = ex.getRequestMethod();
+        if (!s.equals("POST")) {
+            ex.getResponseHeaders().set("Allow", "POST");
+            ex.sendResponseHeaders(500, -1);
+            ex.close();
+            return;
+        }
+        System.out.println ("Server: reading request body");
+        InputStream is = ex.getRequestBody();
+        // read request
+        byte[] buf = new byte [1024];
+        while (is.read(buf) != -1) ;
+        is.close();
+        ex.sendResponseHeaders(200, -1);
+        ex.close();
+   }
+}