Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/com/sun/net/httpserver/bugs/B6341616.java
38867 views
/*1* Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/**24* @test25* @bug 634161626* @summary Server doesnt send response if there is a RuntimeException in validate of BasicAuthFilter27*/2829import com.sun.net.httpserver.*;3031import java.util.*;32import java.util.concurrent.*;33import java.io.*;34import java.net.*;35import java.security.*;36import java.security.cert.*;37import javax.net.ssl.*;3839public class B6341616 {4041public static void main (String[] args) throws Exception {42Handler handler = new Handler();43InetSocketAddress addr = new InetSocketAddress (0);44HttpServer server = HttpServer.create (addr, 0);45HttpContext ctx = server.createContext ("/test", handler);46BasicAuthenticator filter = new BasicAuthenticator ("[email protected]") {47public boolean checkCredentials (String username, String pw) {48throw new RuntimeException ("");49}50};5152ctx.setAuthenticator (filter);53ExecutorService executor = Executors.newCachedThreadPool();54server.setExecutor (executor);55server.start ();56java.net.Authenticator.setDefault (new MyAuthenticator());5758URL url = new URL ("http://localhost:"+server.getAddress().getPort()+"/test/foo.html");59HttpURLConnection urlc = (HttpURLConnection)url.openConnection ();60try {61InputStream is = urlc.getInputStream();62int c = 0;63while (is.read()!= -1) {64c ++;65}66} catch (IOException e) {67server.stop(2);68executor.shutdown();69System.out.println ("OK");70}71}7273public static boolean error = false;7475static class MyAuthenticator extends java.net.Authenticator {76public PasswordAuthentication getPasswordAuthentication () {77PasswordAuthentication pw;78if (!getRequestingPrompt().equals ("[email protected]")) {79B6341616.error = true;80}81pw = new PasswordAuthentication ("fred", "xyz".toCharArray());82return pw;83}84}8586static class Handler implements HttpHandler {87int invocation = 1;88public void handle (HttpExchange t)89throws IOException90{91InputStream is = t.getRequestBody();92Headers map = t.getRequestHeaders();93Headers rmap = t.getResponseHeaders();94while (is.read () != -1) ;95is.close();96t.sendResponseHeaders (200, -1);97t.close();98}99}100}101102103