33 lines
1.2 KiB
Diff
33 lines
1.2 KiB
Diff
diff --git a/lib/plugins/signon-plugins-common/SignOn/blobiohandler.cpp b/lib/plugins/signon-plugins-common/SignOn/blobiohandler.cpp
|
|
index d156659fe18f07173145bb13329d74d6300fbfc1..cff9c3901269e0ca58a5d0b599632c1bea9ddede 100644
|
|
--- a/lib/plugins/signon-plugins-common/SignOn/blobiohandler.cpp
|
|
+++ b/lib/plugins/signon-plugins-common/SignOn/blobiohandler.cpp
|
|
@@ -111,8 +111,17 @@ void BlobIOHandler::readBlob()
|
|
{
|
|
QDataStream in(m_readChannel);
|
|
|
|
+ in.startTransaction();
|
|
QByteArray fractionBa;
|
|
in >> fractionBa;
|
|
+
|
|
+ if (!in.commitTransaction()) {
|
|
+ setReadNotificationEnabled(true);
|
|
+ // FIXME: with next ABI break, add a timer to prevent infinite waiting
|
|
+ // if the other party behaves badly
|
|
+ return;
|
|
+ }
|
|
+
|
|
m_blobBuffer.append(fractionBa);
|
|
|
|
//Avoid infinite loops if the other party behaves badly
|
|
@@ -126,8 +135,7 @@ void BlobIOHandler::readBlob()
|
|
QVariantMap sessionDataMap;
|
|
sessionDataMap = byteArrayToVariantMap(m_blobBuffer);
|
|
|
|
- if (m_blobSize > SIGNON_IPC_BUFFER_PAGE_SIZE)
|
|
- setReadNotificationEnabled(false);
|
|
+ setReadNotificationEnabled(false);
|
|
|
|
emit dataReceived(sessionDataMap);
|
|
}
|