Server gets client's CN
[hcoop/domtool2.git] / src / openssl.sml
index 627b405..ea91848 100644 (file)
@@ -169,7 +169,18 @@ fun accept listener =
     if F_OpenSSL_SML_do_accept.f' listener <= 0 then
        NONE
     else
-       SOME (F_OpenSSL_SML_pop.f' listener)
+       let
+           val bio = F_OpenSSL_SML_pop.f' listener
+       in
+           if C.Ptr.isNull' bio then
+               (ssl_err "Null accepted";
+                raise OpenSSL "Null accepted")
+           else if F_OpenSSL_SML_do_handshake.f' bio <= 0 then
+               (ssl_err "Handshake failed";
+                raise OpenSSL "Handshake failed")
+           else
+               SOME bio
+       end
 
 fun peerCN bio =
     let
@@ -186,4 +197,6 @@ fun peerCN bio =
            ZString.toML' subj
     end
 
+fun acceptPeerCN bio = peerCN (F_OpenSSL_SML_next.f' bio)
+
 end