[Mono-bugs] [Bug 76254][Nor] Changed - Infinite loop entered on
server during SSL handhake.
bugzilla-daemon at bugzilla.ximian.com
bugzilla-daemon at bugzilla.ximian.com
Wed Jan 18 09:40:20 EST 2006
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by sebastien at ximian.com.
http://bugzilla.ximian.com/show_bug.cgi?id=76254
--- shadow/76254 2006-01-18 09:19:21.000000000 -0500
+++ shadow/76254.tmp.13776 2006-01-18 09:40:20.000000000 -0500
@@ -1,12 +1,12 @@
Bug#: 76254
Product: Mono: Class Libraries
Version: 1.1
OS: unknown
OS Details: Mandrake 9.2 and a realtime linux based on kernel 2.4
-Status: REOPENED
+Status: ASSIGNED
Resolution:
Severity: Unknown
Priority: Normal
Component: Mono.Security
AssignedTo: sebastien at ximian.com
ReportedBy: imoir at templetech.com
@@ -197,6 +197,49 @@
this.protocol.ReceiveRecord(this.innerStream);
}
if (certRequested &&
(this.context.ClientSettings.ClientCertificate == null))
+
+------- Additional Comments From sebastien at ximian.com 2006-01-18 09:40 -------
+Thanks, I'll try it - but I don't see how closing the socket will get
+it out the loop (more than the actual code). I guess LastHandshakeMsg
+is updated elsewhere in this case...
+
+I've been "playing" with a similar patch (not something I wanted to
+put in SVN) just to see where else it could "hang"...
+
+
+Index: Mono.Security.Protocol.Tls/SslServerStream.cs
+===================================================================
+--- Mono.Security.Protocol.Tls/SslServerStream.cs (revision 55716)
++++ Mono.Security.Protocol.Tls/SslServerStream.cs (working copy)
+@@ -226,10 +226,18 @@
+
+this.protocol.SendRecord(HandshakeType.ServerHelloDone);
+
+ // Receive client response, until the Client
+Finished message
+- // is received
++ // is received. IE can be interrupted at this
+stage and never
++ // complete the handshake
++ DateTime complete = DateTime.Now.AddSeconds (10);
+ while (this.context.LastHandshakeMsg !=
+HandshakeType.Finished)
+ {
+
+this.protocol.ReceiveRecord(this.innerStream);
++ if (DateTime.Now > complete)
++ {
++ throw new TlsException(
++
+AlertDescription.HandshakeFailiure,
++ "The client stopped
+the handshake.");
++ }
+ }
+
+ if (certRequested &&
+(this.context.ClientSettings.ClientCertificate == null))
+
More information about the mono-bugs
mailing list