Hi, I have a problem. I'm using QNetworkAccessManager:

Qt Code:
  1. QNetworkRequest request;
  2. request.setUrl(QUrl("http://www.discogs.com/search?type=releases&q="
  3. +QString(QUrl::toPercentEncoding(query))
  4. +"&f=xml&api_key="
  5. +Settings::instance()->discogsKey));
  6. request.setRawHeader("Accept-Encoding", "gzip");
  7. request.setAttribute(QNetworkRequest::User,"discogs search");
  8. ...
  9. QNetworkReply *reply = networkManager->get(request);
  10. connect(reply, SIGNAL(finished()), this, SLOT(handleNetworkReply()));
  11. connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),
  12. this, SLOT(handleNetworkError()));
  13. connect(reply,SIGNAL(metaDataChanged()),SLOT(handleNetworkState()));
To copy to clipboard, switch view to plain text mode 

and then working with the reply in the slot handleNetworkReply():

Qt Code:
  1. void TagsFiller::handleNetworkReply()
  2. {
  3. QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender());
  4. if (!reply) return;
  5. QString networkType=reply->request().attribute(QNetworkRequest::User).toString();
  6.  
  7. int n = reply->request().attribute(QNetworkRequest::Attribute(QNetworkRequest::User+1)).toInt();
  8.  
  9. QByteArray rawResponse = reply->readAll();
  10. QByteArray response = rawResponse;
  11.  
  12. if (reply->hasRawHeader("Content-Encoding") && reply->rawHeader("Content-Encoding")=="gzip") {
  13. //we have to unzip the response, so we are trying to get content size
  14. if (file.open()) {
  15. file.write(rawResponse);
  16. file.close();
  17. response = deflateFile(file.fileName());
  18. }
  19. }
  20.  
  21. //un-xml response
  22. if (networkType=="discogs search")
  23. parseDiscogsSearch(response);
  24. if (networkType=="discogs release")
  25. parseDiscogsRelease(response,n);
  26. if (networkType=="discogs image")
  27. parseDiscogsImage(rawResponse,"",n);
  28. if (networkType=="freedb search")
  29. parseFreedbSearch(response);
  30. if (networkType=="freedb query")
  31. parseFreedbQuery(response);
  32. if (networkType=="freedb read")
  33. parseFreedbRead(response,n);
  34. reply->deleteLater();
  35. }
To copy to clipboard, switch view to plain text mode 

But if the connection with the Internet is down and I'm closing the dialog without timeout waiting, I have network replies still processing, and my program won't quit at all.
I tested it in Windows (Qt 4.6) and Linux (Qt 4.5), the problem is still present.
I know that QNetworkReply has slot abort(), but this solution doesn't work:

Qt Code:
  1. TagsFiller::~TagsFiller()
  2. {
  3. if (!repliesStack.isEmpty()) {
  4. foreach(QNetworkReply *reply,repliesStack.values()) {
  5. reply->abort();
  6. reply->deleteLater();
  7. }
  8. repliesStack.clear();
  9. }
  10. }
To copy to clipboard, switch view to plain text mode 

Can anyone help me?