Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.2:PowerPC
kdebase3
kdebase-trinity-sftp-fix.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File kdebase-trinity-sftp-fix.diff of Package kdebase3
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/kio_sftp.cpp b/kioslave/sftp/kio_sftp.cpp index 2316c8c..04a2b33 100644 --- a/kioslave/sftp/kio_sftp.cpp +++ b/kioslave/sftp/kio_sftp.cpp @@ -481,11 +481,7 @@ void sftpProtocol::setHost (const QString& h, int port, const QString& user, c if( port > 0 ) mPort = port; else { - struct servent *pse; - if( (pse = getservbyname("ssh", "tcp") ) == NULL ) - mPort = 22; - else - mPort = ntohs(pse->s_port); + mPort = -1; } mUsername = user; 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 @@ QString 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 @@ QString KSshProcess::getLine() { // had data on it first. if( FD_ISSET(ptyfd, &rfds) ) { ptyLine = ssh.readLineFromPty(false); - buffer.prepend(QString(ptyLine)); + if (ptyLine.size() > 0) { + buffer.prepend(QString(ptyLine)); + } //kdDebug(KSSHPROC) << "KSshProcess::getLine(): " // "line from pty -" << ptyLine << endl; } - + if( FD_ISSET(errfd, &rfds) ) { errLine = ssh.readLineFromStderr(false); - buffer.prepend(QString(errLine)); + if (errLine.size() > 0) { + buffer.prepend(QString(errLine)); + } //kdDebug(KSSHPROC) << "KSshProcess::getLine(): " // "line from err -" << errLine << endl; } @@ -637,7 +643,11 @@ QString KSshProcess::getLine() { kdDebug(KSSHPROC) << "KSshProcess::getLine(): " "Exception on std err file descriptor." << endl; } - + + if (buffer.size() == 0) { + milliseconds++; + usleep(1000); + } } }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor