-rw-r--r-- | libkdepim/ksyncmanager.cpp | 26 | ||||
-rw-r--r-- | libkdepim/ksyncmanager.h | 4 |
2 files changed, 27 insertions, 3 deletions
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp index 08a263c..5214fe7 100644 --- a/libkdepim/ksyncmanager.cpp +++ b/libkdepim/ksyncmanager.cpp @@ -1069,10 +1069,13 @@ void KSyncManager::syncPi() void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state) { //enum { success, errorW, errorR, quiet }; - if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) { - mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") ); + if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ||state == KCommandSocket::errorPW ) { + if ( state == KCommandSocket::errorPW ) + mParent->topLevelWidget()->setCaption( i18n("Wrong password: Receiving remote file failed.") ); + else + mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") ); delete s; if ( state == KCommandSocket::errorR ) { KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget()); connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); @@ -1200,8 +1203,17 @@ void KServerSocket::readClient() end_connect(); } } } +void KServerSocket::error_connect() +{ + QTextStream os( mSocket ); + os.setEncoding( QTextStream::Latin1 ); + os << "ERROR_PW\r\n\r\n"; + mSocket->close(); + if ( mSocket->state() == QSocket::Idle ) + QTimer::singleShot( 10, this , SLOT ( discardClient())); +} void KServerSocket::end_connect() { delete mSyncActionDialog; mSyncActionDialog = 0; @@ -1350,8 +1362,9 @@ KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, { mPassWord = password; mSocket = 0; mFirst = false; + mFirstLine = true; mPort = port; mHost = host; tlw = cap; mRetVal = quiet; @@ -1447,8 +1460,9 @@ void KCommandSocket::startReadFileFromSocket() mFirst = false; mTimerSocket->stop(); mFileString = ""; mTime.start(); + mFirstLine = true; QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) )); } void KCommandSocket::readFileFromSocket() @@ -1456,8 +1470,16 @@ void KCommandSocket::readFileFromSocket() //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ()); while ( mSocket->canReadLine () ) { mTime.restart(); QString line = mSocket->readLine (); + if ( mFirstLine ) { + mFirstLine = false; + if ( line.left( 8 ) == "ERROR_PW" ) { + mRetVal = errorPW; + deleteSocket(); + return ; + } + } mFileString += line; //qDebug("readline: %s ", line.latin1()); } if ( mTime.elapsed () < 3000 ) { diff --git a/libkdepim/ksyncmanager.h b/libkdepim/ksyncmanager.h index 09bd1c1..810a515 100644 --- a/libkdepim/ksyncmanager.h +++ b/libkdepim/ksyncmanager.h @@ -61,8 +61,9 @@ class KServerSocket : public QServerSocket bool blockRC; void send_file(); void get_file(); void end_connect(); + void error_connect(); QDialog* mSyncActionDialog; QSocket* mSocket; QString mPassWord; QString mFileName; @@ -73,9 +74,9 @@ class KServerSocket : public QServerSocket class KCommandSocket : public QObject { Q_OBJECT public: - enum state { successR, errorR, successW, errorW, errorTO, quiet }; + enum state { successR, errorR, successW, errorW, errorTO, errorPW,quiet }; KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent=0, QWidget* cap = 0, const char * name=0 ); void readFile( QString ); void writeFile( QString ); void sendStop(); @@ -101,8 +102,9 @@ class KCommandSocket : public QObject int mRetVal; QTime mTime; QString mFileString; bool mFirst; + bool mFirstLine; }; class KSyncManager : public QObject |