avoid closing local sockets before writing is finished

This commit is contained in:
Luis Ángel San Martín 2014-06-19 20:35:28 +02:00
parent 9ce0da721e
commit b0b1a5e98c
2 changed files with 7 additions and 1 deletions

View File

@ -62,6 +62,8 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
return false; return false;
} }
localSocket->waitForBytesWritten(2000);
//QByteArray data; //QByteArray data;
tries = 0; tries = 0;
int dataAvailable = 0; int dataAvailable = 0;
@ -128,6 +130,7 @@ bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB & comic)
localSocket->connectToServer(YACREADERLIBRARY_GUID); localSocket->connectToServer(YACREADERLIBRARY_GUID);
if(localSocket->isOpen()) if(localSocket->isOpen())
{ {
//QLOG_INFO() << "Connection opened for sending ComicInfo";
QByteArray block; QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly); QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_8); out.setVersion(QDataStream::Qt_4_8);
@ -148,7 +151,9 @@ bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB & comic)
tries++; tries++;
previousWritten = written; previousWritten = written;
} }
localSocket->waitForBytesWritten(2000);
localSocket->close(); localSocket->close();
//QLOG_INFO() << QString("Sending Comic Info : writen data (%1,%2)").arg(written).arg(block.size());
if(tries == 100 && written != block.size()) if(tries == 100 && written != block.size())
{ {
emit finished(); emit finished();

View File

@ -110,7 +110,7 @@ void YACReaderClientConnectionWorker::run()
} }
if(tries == 20) if(tries == 20)
{ {
QLOG_ERROR() << "Local connection: unable to read the message size"; QLOG_ERROR() << "Local connection: unable to read the message size" << clientConnection->errorString();
return; return;
} }
@ -163,6 +163,7 @@ void YACReaderClientConnectionWorker::run()
while(written != block.size() && tries < 200) while(written != block.size() && tries < 200)
{ {
int ret = clientConnection->write(block); int ret = clientConnection->write(block);
clientConnection->waitForBytesWritten(10);
if(ret != -1) if(ret != -1)
{ {
written += ret; written += ret;