/**
 */

import java.net.Socket;
import java.net.ServerSocket;
import java.io.*;
import javax.naming.*;
import javax.naming.directory.*;
import java.util.Hashtable;

public class ReadTimeoutTest {

    public static void main(String[] args) throws Exception {

	boolean passed = false;

	// Set up the environment for creating the initial context
	Hashtable env = new Hashtable(11);
	env.put(Context.INITIAL_CONTEXT_FACTORY,
	    "com.sun.jndi.ldap.LdapCtxFactory");
	env.put("com.sun.jndi.ldap.read.timeout", "1000");
        env.put(Context.PROVIDER_URL, "ldap://localhost:2001");

	Server s = new Server();

	try {

	    // start the server
	    s.start();

	    // Create initial context
	    DirContext ctx = new InitialDirContext(env);
	    System.out.println("LDAP Client: Connected to the Server");

	    // Close the context when we're done
	    ctx.close();
	} catch (NamingException e) {
	    e.printStackTrace();
	}
	s.interrupt();
    }

    static class Server extends Thread {

        static int serverPort = 2001;

	Server() {
	}

	public void run() {
	    try {
		ServerSocket serverSock = new ServerSocket(serverPort);
            	Socket socket = serverSock.accept();
            	System.out.println("Server: Connection accepted");

            	BufferedInputStream bin = new BufferedInputStream(socket.
                                getInputStream());
            	while (true) {
                    bin.read();
            	}
	    } catch (IOException e) {
		// ignore
	    }
       }
    }
}
