void requestOpen(OpenRequest request) throws ChannelError {
        String path;

        if (HydnaDebug.HYDNADEBUG) {
            DebugHelper.debugPrint("Connection",
                                   0,
                                   "A channel is trying to send a new request");
        }

        path = request.getChannel().getPath();

        if (getChannelByPath(path) != null) {
            throw new ChannelError("Channel already open");
        }

        try {
            synchronized (this) {
                if (!m_handshaked) {
                    connectConnection(m_host, m_port);
                }
            }
        } catch (ChannelError e) {
            throw e;
        }

        synchronized (this) {
            m_pendingOpenRequest = request;
        }
    }