public void start() throws JSchException{
    Session _session=getSession();
    try{
      Request request;
      if(xforwading){
        request=new RequestX11();
        request.request(_session, this);
      }
      if(pty){
	request=new RequestPtyReq();
	request.request(_session, this);
      }
      request=new RequestSubsystem();
      ((RequestSubsystem)request).request(_session, this, subsystem, want_reply);
    }
    catch(Exception e){
      if(e instanceof JSchException){ throw (JSchException)e; }
      if(e instanceof Throwable)
        throw new JSchException("ChannelSubsystem", (Throwable)e);
      throw new JSchException("ChannelSubsystem");
    }
    if(io.in!=null){
      thread=new Thread(this);
      thread.setName("Subsystem for "+_session.host);
      if(_session.daemon_thread){
        thread.setDaemon(_session.daemon_thread);
      }
      thread.start();
    }
  }