-rw-r--r-- | libkdepim/ksyncmanager.cpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp index 08a263c..5214fe7 100644 --- a/libkdepim/ksyncmanager.cpp +++ b/libkdepim/ksyncmanager.cpp @@ -1065,18 +1065,21 @@ void KSyncManager::syncPi() KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() ); connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); commandSocket->readFile( syncFileName() ); } 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 )) ); commandSocket->sendStop(); } mPisyncFinished = true; return; @@ -1196,16 +1199,25 @@ void KServerSocket::readClient() } } if ( tokens[0] == "STOP" ) { //emit endConnect(); 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; } void KServerSocket::send_file() { //qDebug("MainWindow::sendFile(QSocket* s) "); @@ -1346,16 +1358,17 @@ void KServerSocket::readBackFileFromSocket() } KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, QWidget * cap, const char * name ): QObject( parent, name ) { mPassWord = password; mSocket = 0; mFirst = false; + mFirstLine = true; mPort = port; mHost = host; tlw = cap; mRetVal = quiet; mTimerSocket = new QTimer ( this ); connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( deleteSocket() ) ); } void KCommandSocket::sendFileRequest() @@ -1443,25 +1456,34 @@ void KCommandSocket::sendStop() void KCommandSocket::startReadFileFromSocket() { if ( ! mFirst ) return; mFirst = false; mTimerSocket->stop(); mFileString = ""; mTime.start(); + mFirstLine = true; QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) )); } 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 ) { // wait for more //qDebug("waitformore "); QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) )); return; |