summaryrefslogtreecommitdiffabout
path: root/libkdepim
authorzautrix <zautrix>2005-02-24 02:01:08 (UTC)
committer zautrix <zautrix>2005-02-24 02:01:08 (UTC)
commit5af16f69232073d1fa46d2dea3774beaaafb00c5 (patch) (side-by-side diff)
tree0790afdd906df50520ac4415a9d35b95107d4d48 /libkdepim
parent513496c67403deb04339cfc87143ed5554720e32 (diff)
downloadkdepimpi-5af16f69232073d1fa46d2dea3774beaaafb00c5.zip
kdepimpi-5af16f69232073d1fa46d2dea3774beaaafb00c5.tar.gz
kdepimpi-5af16f69232073d1fa46d2dea3774beaaafb00c5.tar.bz2
socket fixes
Diffstat (limited to 'libkdepim') (more/less context) (ignore whitespace changes)
-rw-r--r--libkdepim/ksyncmanager.cpp94
-rw-r--r--libkdepim/ksyncmanager.h7
2 files changed, 74 insertions, 27 deletions
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp
index d8ca3ba..47d00a4 100644
--- a/libkdepim/ksyncmanager.cpp
+++ b/libkdepim/ksyncmanager.cpp
@@ -1070,11 +1070,21 @@ void KSyncManager::syncPi()
void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state)
{
//enum { success, errorW, errorR, quiet };
- if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ||state == KCommandSocket::errorPW ) {
+
+
+
+ if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ||state == KCommandSocket::errorPW ||
+ state == KCommandSocket::errorCA ||state == KCommandSocket::errorFI ||state == KCommandSocket::errorUN ) {
if ( state == KCommandSocket::errorPW )
mParent->topLevelWidget()->setCaption( i18n("Wrong password: Receiving remote file failed.") );
- else
+ else if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO )
mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") );
+ else if ( state == KCommandSocket::errorCA )
+ mParent->topLevelWidget()->setCaption( i18n("Sync cancelled from remote.") );
+ else if ( state == KCommandSocket::errorFI )
+ mParent->topLevelWidget()->setCaption( i18n("File error on remote.") );
+ else if ( state == KCommandSocket::errorUN )
+ mParent->topLevelWidget()->setCaption( i18n("Unknown error on remote.") );
delete s;
if ( state == KCommandSocket::errorR ) {
KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget());
@@ -1132,6 +1142,7 @@ KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject
mSocket = 0;
mSyncActionDialog = 0;
blockRC = false;
+ mErrorMessage = 0;
}
void KServerSocket::newConnection ( int socket )
@@ -1150,12 +1161,17 @@ void KServerSocket::newConnection ( int socket )
void KServerSocket::discardClient()
{
- //qDebug(" KServerSocket::discardClient()");
+ QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
+}
+void KServerSocket::deleteSocket()
+{
+ qDebug("KSS::deleteSocket");
if ( mSocket ) {
delete mSocket;
mSocket = 0;
}
- //emit endConnect();
+ if ( mErrorMessage )
+ QTimer::singleShot( 10, this , SLOT ( displayErrorMessage()));
}
void KServerSocket::readClient()
{
@@ -1165,6 +1181,12 @@ void KServerSocket::readClient()
qDebug("ERROR::KSS::readClient(): mSocket == 0 ");
return;
}
+ if ( mErrorMessage ) {
+ mErrorMessage = 999;
+ error_connect("ERROR_UN\r\n\r\n");
+ return;
+ }
+ mErrorMessage = 0;
//qDebug("KServerSocket::readClient()");
if ( mSocket->canReadLine() ) {
QString line = mSocket->readLine();
@@ -1183,9 +1205,8 @@ void KServerSocket::readClient()
send_file();
}
else {
- error_connect();
- KMessageBox::error( 0, i18n("Got send file request\nwith invalid password"));
- //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
+ mErrorMessage = 1;
+ error_connect("ERROR_PW\r\n\r\n");
}
}
if ( tokens[0] == "PUT" ) {
@@ -1195,10 +1216,9 @@ void KServerSocket::readClient()
get_file();
}
else {
- error_connect();
+ mErrorMessage = 2;
+ error_connect("ERROR_PW\r\n\r\n");
end_connect();
- KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password"));
- //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
}
}
if ( tokens[0] == "STOP" ) {
@@ -1207,14 +1227,23 @@ void KServerSocket::readClient()
}
}
}
-void KServerSocket::error_connect()
+void KServerSocket::displayErrorMessage()
+{
+ if ( mErrorMessage == 1 )
+ KMessageBox::error( 0, i18n("Got send file request\nwith invalid password"));
+ else if ( mErrorMessage == 2 )
+ KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password"));
+ mErrorMessage = 0;
+}
+void KServerSocket::error_connect( QString errmess )
{
QTextStream os( mSocket );
os.setEncoding( QTextStream::Latin1 );
- os << "ERROR_PW\r\n\r\n";
+ os << errmess ;
mSocket->close();
- if ( mSocket->state() == QSocket::Idle )
- QTimer::singleShot( 10, this , SLOT ( discardClient()));
+ if ( mSocket->state() == QSocket::Idle ) {
+ QTimer::singleShot( 0, this , SLOT ( discardClient()));
+ }
}
void KServerSocket::end_connect()
{
@@ -1236,6 +1265,7 @@ void KServerSocket::send_file()
lay->setSpacing(7);
if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
int secs = QDateTime::currentDateTime().secsTo( KSyncManager::mRequestedSyncEvent );
+ secs = 333;
if ( secs < 0 )
secs = secs * (-1);
if ( secs > 30 )
@@ -1249,7 +1279,10 @@ void KServerSocket::send_file()
{
if ( secs > 300 ) {
if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(0, i18n("The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!"), i18n("High clock skew!"),i18n("Synchronize!"))) {
- qDebug("KSS::Sync cancelled ,cs");
+ qDebug("KSS::Sync cancelled ,cs");
+ mErrorMessage = 0;
+ end_connect();
+ error_connect("ERROR_CA\r\n\r\n");
return ;
}
}
@@ -1278,14 +1311,10 @@ void KServerSocket::send_file()
QString fileName = mFileName;
QFile file( fileName );
if (!file.open( IO_ReadOnly ) ) {
- delete mSyncActionDialog;
- mSyncActionDialog = 0;
- qDebug("KSS::error open sync file: %s ", fileName.latin1());
- mSocket->close();
- if ( mSocket->state() == QSocket::Idle )
- QTimer::singleShot( 10, this , SLOT ( discardClient()));
- return ;
-
+ mErrorMessage = 0;
+ end_connect();
+ error_connect("ERROR_FI\r\n\r\n");
+ return ;
}
mSyncActionDialog->setCaption( i18n("Sending file...") );
QTextStream ts( &file );
@@ -1476,8 +1505,23 @@ void KCommandSocket::readFileFromSocket()
QString line = mSocket->readLine ();
if ( mFirstLine ) {
mFirstLine = false;
- if ( line.left( 8 ) == "ERROR_PW" ) {
- mRetVal = errorPW;
+ if ( line.left( 6 ) == "ERROR_" ) {
+ if ( line.left( 8 ) == "ERROR_PW" ) {
+ mRetVal = errorPW;
+ deleteSocket();
+ return ;
+ }
+ if ( line.left( 8 ) == "ERROR_CA" ) {
+ mRetVal = errorCA;
+ deleteSocket();
+ return ;
+ }
+ if ( line.left( 8 ) == "ERROR_FI" ) {
+ mRetVal = errorFI;
+ deleteSocket();
+ return ;
+ }
+ mRetVal = errorUN;
deleteSocket();
return ;
}
diff --git a/libkdepim/ksyncmanager.h b/libkdepim/ksyncmanager.h
index 810a515..bd3ecdc 100644
--- a/libkdepim/ksyncmanager.h
+++ b/libkdepim/ksyncmanager.h
@@ -55,14 +55,17 @@ class KServerSocket : public QServerSocket
void endConnect();
private slots:
void discardClient();
+ void deleteSocket();
void readClient();
+ void displayErrorMessage();
void readBackFileFromSocket();
private :
+ int mErrorMessage;
bool blockRC;
void send_file();
void get_file();
void end_connect();
- void error_connect();
+ void error_connect( QString );
QDialog* mSyncActionDialog;
QSocket* mSocket;
QString mPassWord;
@@ -75,7 +78,7 @@ class KCommandSocket : public QObject
{
Q_OBJECT
public:
- enum state { successR, errorR, successW, errorW, errorTO, errorPW,quiet };
+ enum state { successR, errorR, successW, errorW, errorTO, errorPW, errorCA, errorFI, errorUN,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 );