10-12-2019, 10:16 PM
I got a debug report from an Android user, where this happened:
The Client receives a "StartTLS" from the IdTCPServer (Part of my code).
The Client responces with a "STARTTLS" back, then does a Sleep(1000) (this solves some timing issues) and then switches the Passthrough to FALSE:
sleep(1000);
IdSSLIOHandlerSocketOpenSSL1.PassThrough := false;
The SSL Negotiating starts, and gets to this:
[S] [06:21:09Z] SSL StatusInfo: SSL status: "before/connect initialization"
[S] [06:21:09Z] SSL StatusInfo: SSL status: "before/connect initialization"
[S] [06:21:09Z] SSL StatusInfo: SSL status: "SSLv3 write client hello A"
[S] [06:21:09Z] SSL StatusInfo: SSL status: "SSLv3 write client hello A"
And then it stops. And there is no Exception raised.
The Internet connection is very unreliable at this point, and I expect there may have been major packet loss.
But the system did not recover from this situation, as there was no exception raised, it just hung there.
Question:
- At which point does the SSL negotiation start: Immediatly after PassThrough := false, OR after the first attempt to send data over the link?
- When the Internet connection fails at this point, (and possibly the *Server* got a TCP Reset) is should there be a time-out exception being raised? Because the actual TCP connection is already established.
Thanks, Bart
The Client receives a "StartTLS" from the IdTCPServer (Part of my code).
The Client responces with a "STARTTLS" back, then does a Sleep(1000) (this solves some timing issues) and then switches the Passthrough to FALSE:
sleep(1000);
IdSSLIOHandlerSocketOpenSSL1.PassThrough := false;
The SSL Negotiating starts, and gets to this:
[S] [06:21:09Z] SSL StatusInfo: SSL status: "before/connect initialization"
[S] [06:21:09Z] SSL StatusInfo: SSL status: "before/connect initialization"
[S] [06:21:09Z] SSL StatusInfo: SSL status: "SSLv3 write client hello A"
[S] [06:21:09Z] SSL StatusInfo: SSL status: "SSLv3 write client hello A"
And then it stops. And there is no Exception raised.
The Internet connection is very unreliable at this point, and I expect there may have been major packet loss.
But the system did not recover from this situation, as there was no exception raised, it just hung there.
Question:
- At which point does the SSL negotiation start: Immediatly after PassThrough := false, OR after the first attempt to send data over the link?
- When the Internet connection fails at this point, (and possibly the *Server* got a TCP Reset) is should there be a time-out exception being raised? Because the actual TCP connection is already established.
Thanks, Bart