diff options
Diffstat (limited to 'redhat/kdebase/kdebase-3.5.13-fix_kio_sftp.patch')
-rw-r--r-- | redhat/kdebase/kdebase-3.5.13-fix_kio_sftp.patch | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/redhat/kdebase/kdebase-3.5.13-fix_kio_sftp.patch b/redhat/kdebase/kdebase-3.5.13-fix_kio_sftp.patch new file mode 100644 index 000000000..64dfa8e21 --- /dev/null +++ b/redhat/kdebase/kdebase-3.5.13-fix_kio_sftp.patch @@ -0,0 +1,57 @@ +commit e72f4926c094b2bd94501518fbcd2a3e66a74f6a +Author: Timothy Pearson <kb9vqf@pearsoncomputing.net> +Date: 1335166907 -0500 + + Fix sftp failure on newer systems + This closes Bug 897 + +diff --git a/kioslave/sftp/ksshprocess.cpp b/kioslave/sftp/ksshprocess.cpp +index 2ccab59..3393f89 100644 +--- a/kioslave/sftp/ksshprocess.cpp ++++ b/kioslave/sftp/ksshprocess.cpp +@@ -569,7 +569,9 @@ TQString KSshProcess::getLine() { + // If we still don't have anything in our buffer so there must + // not be anything on the pty or stderr. Setup a select() + // to wait for some data from SSH. +- if( buffer.empty() ) { ++ // Hack around select() failure on newer systems ++ unsigned long milliseconds = 0; ++ while ((buffer.size() == 0) && (milliseconds < (60*1000))) { + //kdDebug(KSSHPROC) << "KSshProcess::getLine(): " << + // "Line buffer empty, calling select() to wait for data." << endl; + int errfd = ssh.stderrFd(); +@@ -616,14 +618,18 @@ TQString KSshProcess::getLine() { + // had data on it first. + if( FD_ISSET(ptyfd, &rfds) ) { + ptyLine = ssh.readLineFromPty(false); +- buffer.prepend(TQString(ptyLine)); ++ if (ptyLine.size() > 0) { ++ buffer.prepend(TQString(ptyLine)); ++ } + //kdDebug(KSSHPROC) << "KSshProcess::getLine(): " + // "line from pty -" << ptyLine << endl; + } +- ++ + if( FD_ISSET(errfd, &rfds) ) { + errLine = ssh.readLineFromStderr(false); +- buffer.prepend(TQString(errLine)); ++ if (errLine.size() > 0) { ++ buffer.prepend(TQString(errLine)); ++ } + //kdDebug(KSSHPROC) << "KSshProcess::getLine(): " + // "line from err -" << errLine << endl; + } +@@ -637,7 +643,11 @@ TQString KSshProcess::getLine() { + kdDebug(KSSHPROC) << "KSshProcess::getLine(): " + "Exception on std err file descriptor." << endl; + } +- ++ ++ if (buffer.size() == 0) { ++ milliseconds++; ++ usleep(1000); ++ } + } + } + |