/// <exception cref="NGit.Errors.TransportException"></exception> internal SshPushConnection(TransportGitSsh _enclosing, TransportGitSsh.Connection conn) : base(_enclosing) { this._enclosing = _enclosing; this.conn = conn; try { MessageWriter msg = new MessageWriter(); this.SetMessageWriter(msg); conn.Exec(this._enclosing.GetOptionReceivePack()); InputStream rpErr = conn.GetErrorStream(); this.errorThread = new StreamCopyThread(rpErr, msg.GetRawStream()); this.errorThread.Start(); this.Init(conn.GetInputStream(), conn.GetOutputStream()); conn.Connect(); } catch (TransportException err) { this.Close(); throw; } catch (IOException err) { this.Close(); throw new TransportException(this.uri, JGitText.Get().remoteHungUpUnexpectedly, err ); } try { this.ReadAdvertisedRefs(); } catch (NoRemoteRepositoryException notFound) { string msgs = this.GetMessages(); this._enclosing.CheckExecFailure(conn.GetExitStatus(), this._enclosing.GetOptionReceivePack (), msgs); throw this._enclosing.CleanNotFound(notFound, msgs); } }