Hi everybody,
I've got the probvlem that if I want to read the to my QSslSocket transmitted https-data, the call of QSslSocket->CanReadLine seems to return false. I don't haver any idea whrer this comes from, but it worked how it should and soddenly it didn't without changing anything and changing anything now brings no success.
Here is my code (CSSLConnection inherits QThread and is created from a QTCPServer in its' incommingConnection-function):
Qt Code:
  1. // Verbindung verschlüsseln
  2. MSResult CMSSSLConnection::startSocketencryption()
  3. {
  4. m_pSSLSocket->setLocalCertificate("/home/niklas/Dokumente/MySchool/Debug_Ubuntu_x86_Desktop/MSHTTPSServer/myschool.crt");
  5. m_pSSLSocket->setPrivateKey("/home/niklas/Dokumente/MySchool/Debug_Ubuntu_x86_Desktop/MSHTTPSServer/myschool.key.insecure");
  6.  
  7. m_pSSLSocket->startServerEncryption();
  8. if(m_pSSLSocket->waitForEncrypted())
  9. {
  10. m_pSSLSocket->write("HTTP/1.1 200 OK\r\n"
  11. "Content-type: text/plain\r\n"
  12. "Content-length: 12\r\n"
  13. "\r\n"
  14. "Hello World!");
  15. return MSR_OK;
  16. }
  17. else
  18. {
  19. Log->Error(QString("Cannot encrypt connection to %1: %2").arg(m_pSSLSocket->peerAddress().toString(),
  20. m_pSSLSocket->errorString()));
  21. m_pSSLSocket->disconnectFromHost();
  22. return MSR_ENCRYPTION_ERROR;
  23. }
  24. }
  25.  
  26. // Neue Verbindung wurde aufgebaut
  27. void CMSSSLConnection::acceptClient()
  28. {
  29. }
  30.  
  31. // Daten verarbeiten
  32. void CMSSSLConnection::readData()
  33. {
  34. if(m_pSSLSocket->canReadLine())
  35. {
  36. // Anfrage zerlegen
  37. QStringList request = QString(m_pSSLSocket->readLine()).split(QRegExp("[ \r\n][ \r\n]*"));
  38.  
  39. // Um welchen Anfragetypen handelt es sich?
  40. if(request[0] == "GET")
  41. {
  42. // Einfache GET-ANfrage
  43. QTextStream out(m_pSSLSocket);
  44. out.setAutoDetectUnicode(true);
  45. out << "HTTP/1.0 200 Ok\r\n"
  46. "Content-Type: text/html;\r\n"
  47. "\r\n"
  48. "<h1>Nothing to see here</h1>\n";
  49. }
  50. }
  51. else
  52. {
  53. Log->Error(QString("Cannot read line from %1").arg(m_pSSLSocket->peerAddress().toString()));
  54. return;
  55. }
  56. }
To copy to clipboard, switch view to plain text mode 

So in fact, if I connect via firefox (https://localhost) the first message (Hello World) is transmitted, but the second one isn't. Instead of this, in my logfile it says "cannot read line form 127.0.0.1", but there is no exact error given.

The certificates are created like here: http://quickmediasolutions.com/blog/...ations-with-qt, but I used only a length of 2048 for the key and the program should run on linux (ubuntu).
I hope you can help me.