------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=132101 andre duffeck de changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |FIXED ------- Additional Comments From andre duffeck de 2006-08-19 19:34 ------- SVN commit 574652 by duffeck: Handle simultaneous filetransfers properly. NOTE: filetransfers containing several files at once are still not supported. BUG: 132101 M +7 -1 libkyahoo/receivefiletask.cpp M +35 -14 yahooaccount.cpp M +1 -0 yahooaccount.h --- branches/KDE/3.5/kdenetwork/kopete/protocols/yahoo/libkyahoo/receivefiletask.cpp #574651:574652 @ -107,7 +107,13 @ if( t->service() == Yahoo::ServiceFileTransfer7Info ) - return true; + { + // Only take this transfer if we are the corresponding task (in case of simultaneous file transfers) + if( t->firstParam( 265 ) == m_remoteUrl.url().local8Bit() ) + return true; + else + return false; + } else return false; } --- branches/KDE/3.5/kdenetwork/kopete/protocols/yahoo/yahooaccount.cpp #574651:574652 @ -1361,35 +1361,56 @ kdDebug(YAHOO_GEN_DEBUG) << k_funcinfo << "Filename :" << fname << " size:" << fesize << endl; Kopete::TransferManager::transferManager()->askIncomingTransfer( contact( who ) , fname, fesize, msg, url ); - QObject::connect( Kopete::TransferManager::transferManager(), SIGNAL( accepted( Kopete::Transfer *, const QString& ) ), - this, SLOT( slotReceiveFileAccepted( Kopete::Transfer *, const QString& ) ) ); - QObject::connect( Kopete::TransferManager::transferManager(), SIGNAL( refused(const Kopete::FileTransferInfo& ) ), - this, SLOT( slotReceiveFileRefused( const Kopete::FileTransferInfo& ) ) ); + + if( m_pendingFileTransfers.empty() ) + { + QObject::connect( Kopete::TransferManager::transferManager(), SIGNAL( accepted( Kopete::Transfer *, const QString& ) ), + this, SLOT( slotReceiveFileAccepted( Kopete::Transfer *, const QString& ) ) ); + QObject::connect( Kopete::TransferManager::transferManager(), SIGNAL( refused(const Kopete::FileTransferInfo& ) ), + this, SLOT( slotReceiveFileRefused( const Kopete::FileTransferInfo& ) ) ); + } + m_pendingFileTransfers.append( url ); } void YahooAccount::slotReceiveFileAccepted(Kopete::Transfer *transfer, const QString& fileName) { - m_session->receiveFile( transfer->info().transferId(), transfer->info().contact()->contactId(), transfer->info().internalId(), fileName ); - QObject::disconnect( Kopete::TransferManager::transferManager(), SIGNAL( accepted( Kopete::Transfer *, const QString& ) ), - this, SLOT( slotReceiveFileAccepted( Kopete::Transfer *, const QString& ) ) ); - QObject::disconnect( Kopete::TransferManager::transferManager(), SIGNAL( refused(const Kopete::FileTransferInfo& ) ), - this, SLOT( slotReceiveFileRefused( const Kopete::FileTransferInfo& ) ) ); + if( !m_pendingFileTransfers.contains( transfer->info().internalId() ) ) + return; + m_pendingFileTransfers.remove( transfer->info().internalId() ); + m_session->receiveFile( transfer->info().transferId(), transfer->info().contact()->contactId(), transfer->info().internalId(), fileName ); m_fileTransfers.insert( transfer->info().transferId(), transfer ); QObject::connect( transfer, SIGNAL(result( KIO::Job * )), this, SLOT(slotFileTransferResult( KIO::Job * )) ); + + if( m_pendingFileTransfers.empty() ) + { + QObject::disconnect( Kopete::TransferManager::transferManager(), SIGNAL( accepted( Kopete::Transfer *, const QString& ) ), + this, SLOT( slotReceiveFileAccepted( Kopete::Transfer *, const QString& ) ) ); + QObject::disconnect( Kopete::TransferManager::transferManager(), SIGNAL( refused(const Kopete::FileTransferInfo& ) ), + this, SLOT( slotReceiveFileRefused( const Kopete::FileTransferInfo& ) ) ); + } } void YahooAccount::slotReceiveFileRefused( const Kopete::FileTransferInfo& info ) -{ +{ + if( !m_pendingFileTransfers.contains( info.internalId() ) ) + return; + + m_pendingFileTransfers.remove( info.internalId() ); m_session->rejectFile( info.contact()->contactId(), info.internalId() ); - QObject::disconnect( Kopete::TransferManager::transferManager(), SIGNAL( accepted( Kopete::Transfer *, const QString& ) ), - this, SLOT( slotReceiveFileAccepted( Kopete::Transfer *, const QString& ) ) ); - QObject::disconnect( Kopete::TransferManager::transferManager(), SIGNAL( refused(const Kopete::FileTransferInfo& ) ), - this, SLOT( slotReceiveFileRefused( const Kopete::FileTransferInfo& ) ) ); + + if( m_pendingFileTransfers.empty() ) + { + QObject::disconnect( Kopete::TransferManager::transferManager(), SIGNAL( accepted( Kopete::Transfer *, const QString& ) ), + this, SLOT( slotReceiveFileAccepted( Kopete::Transfer *, const QString& ) ) ); + QObject::disconnect( Kopete::TransferManager::transferManager(), SIGNAL( refused(const Kopete::FileTransferInfo& ) ), + this, SLOT( slotReceiveFileRefused( const Kopete::FileTransferInfo& ) ) ); + } } void YahooAccount::slotFileTransferBytesProcessed( unsigned int transferId, unsigned int bytes ) { + kdDebug(YAHOO_GEN_DEBUG) << k_funcinfo << "Transfer: " << transferId << " Bytes:" << bytes << endl; Kopete::Transfer *t = m_fileTransfers[transferId]; if( !t ) return; --- branches/KDE/3.5/kdenetwork/kopete/protocols/yahoo/yahooaccount.h #574651:574652 @ -266,6 +266,7 @ QMap<QString, YahooConferenceChatSession *> m_conferences; QStringList m_pendingConfInvites; QStringList m_pendingWebcamInvites; + QStringList m_pendingFileTransfers; QMap<unsigned int, Kopete::Transfer *> m_fileTransfers; _______________________________________________ kopete-devel mailing list kopete-devel@kde.org https://mail.kde.org/mailman/listinfo/kopete-devel