title: Qt QNetworkAccessManager why i can’t send more then 1 http request in parallel in the same main thread
body: <p>I just noticed that when I try to send http request while there are already http requests
  going on in the background, one of them stops and waits until the previous one will finish. They both use their own QNetworkAccessManagers. Can anyone explain why this is happening?</p>
  
  <p><strong>UPDATE</strong>
  i must doing here something wrong and i don't know , here some code .<br>
  there are 2 http post functions the first is simple post that invoked every 5 sec
  and the second one is file upload post function that call in parallel.<br>
  when i call the file upload the first stops , whits until the file upload finished and   continue this is come's from Qt with out my intervention  .
  this is with single QNetworkAccessManager</p>
  
  <pre><code>    //Init in the class contractor
  
       networkManager = new QNetworkAccessManager(this); 
       connect(networkManager,SIGNAL(sslErrors(QNetworkReply*,QList&lt;QSslError&gt;)), this, SLOT(on_sslErr(QNetworkReply*,QList&lt;QSslError&gt;)));
  
  
      //-----------------------------------------------------\\
  
      //this is upload file code , its taking time untill it finish working great
  
      PostImageRequest( QString&amp; Response,
                                      QMap&lt;QString,QString&gt; paramsToPostMap,
                                      QString&amp; BaseUrl,
                                      QString imageFullPath,
                                      int iTimeOutInterval)
  
  
      QByteArray imageFormat = QImageReader::imageFormat(imageFullPath);
      QString imageMimeType(imageFormat);
      QNetworkRequest request;
      QUrl params;
      QMapIterator&lt;QString,QString&gt; i(paramsToPostMap);
      while (i.hasNext()) {
          i.next();
          addField(i.key(),i.value());
      }
  
        addFile("file",imageFullPath,imageMimeType);
        QString crlf="\r\n";
        qsrand(QDateTime::currentDateTime().toTime_t());
        QString b=QVariant(qrand()).toString()+QVariant(qrand()).toString()+QVariant(qrand()).toString();
        QString boundary="---------------------------"+b;
        QString endBoundary=crlf+"--"+boundary+"--"+crlf;
        QString contentType="multipart/form-data; boundary="+boundary;
        boundary="--"+boundary+crlf;
        QByteArray bond=boundary.toAscii();
        QByteArray send;
        bool first=true;
  
        for (int i=0; i&lt;fieldNames.size(); i++) {
          send.append(bond);
          if (first) {
            boundary=crlf+boundary;
            bond=boundary.toAscii();
            first=false;
          }
          send.append(QString("Content-Disposition: form-data; name=\""+fieldNames.at(i)+"\""+crlf).toAscii());
          if (encodingS=="utf-8") send.append(QString("Content-Transfer-Encoding: 8bit"+crlf).toAscii());
          send.append(crlf.toAscii());
          send.append(strToEnc(fieldValues.at(i)));
        }
        for (int i=0; i&lt;files.size(); i++) {
          send.append(bond);
          send.append(QString("Content-Disposition: form-data; name=\""+fileFieldNames.at(i)+"\"; filename=\""+fileNames.at(i)+"\""+crlf).toAscii());
          send.append(QString("Content-Type: "+fileMimes.at(i)+crlf+crlf).toAscii());
          send.append(files.at(i));  
        }
  
        send.append(endBoundary.toAscii());
  
        fieldNames.clear();
        fieldValues.clear();
        fileFieldNames.clear();
        fileNames.clear();
        fileMimes.clear();
        files.clear();
       request.setHeader(QNetworkRequest::ContentTypeHeader, contentType.toAscii());
   request.setHeader(QNetworkRequest::ContentLengthHeader, QVariant(send.size()).toString());
       request.setUrl(BaseUrl);
  
  
       if(iTimeOutInterval != -1)
       {
           QEventLoop loop2;
           QTimer::singleShot(iTimeOutInterval, &amp;loop2, SLOT(quit()) );
           loop2.exec();
   }
       QEventLoop loop;
       QNetworkReply *reply = networkManager-&gt;post(request,send);
       connect(reply, SIGNAL(uploadProgress(qint64,qint64)), this,SLOT(SetProgress(qint64,qint64)));
       connect(reply, SIGNAL(finished()), &amp;loop, SLOT(quit()));
   loop.exec();       
       //return response 
       QNetworkReply::NetworkError networkError = reply-&gt;error();
       HandleNetworkError(networkError); 
       Response.clear();
       QByteArray data=reply-&gt;readAll();
       Response.append(data);
       //delete reply;
       reply-&gt;deleteLater();
  
      //--------------------------------------------------------------------------------\\
  
  //this is the post function that invoket every 5 secound
  
      PostRequest(QString&amp; Response,
                              QMap&lt;QString,QString&gt; paramsToPostMap,
                              QString&amp; BaseUrl,
                              int iTimeOutInterval)
  
  
       QNetworkRequest request;
       QUrl params;
       QMapIterator&lt;QString,QString&gt; i(paramsToPostMap);
       while (i.hasNext()) {
          i.next();
          params.addQueryItem(i.key(),i.value());
       }
       request.setUrl(BaseUrl);
  
       QByteArray postArgs;
       postArgs = params.encodedQuery();
  
       if(iTimeOutInterval != -1)
       {
           QEventLoop loop2;
           QTimer::singleShot(iTimeOutInterval, &amp;loop2, SLOT(quit()) );
           loop2.exec();
   }
       QEventLoop loop;
       QNetworkReply *reply = networkManager-&gt;post(request,postArgs);
       connect(reply, SIGNAL(finished()), &amp;loop, SLOT(quit()));
   loop.exec();       
       //return response 
       QNetworkReply::NetworkError networkError = reply-&gt;error();
       HandleNetworkError(networkError); 
       Response.clear();
       QByteArray data=reply-&gt;readAll();
       Response.append(data);
  
  
       //delete reply;
       reply-&gt;deleteLater(); 
  </code></pre>