//\r
return SSL_write (TlsConn->Ssl, Buffer, (UINT32)BufferSize);\r
}\r
+\r
+/**\r
+ Shutdown a TLS connection.\r
+\r
+ Shutdown the TLS connection without releasing the resources, meaning a new\r
+ connection can be started without calling TlsNew() and without setting\r
+ certificates etc.\r
+\r
+ @param[in] Tls Pointer to the TLS object to shutdown.\r
+\r
+ @retval EFI_SUCCESS The TLS is shutdown successfully.\r
+ @retval EFI_INVALID_PARAMETER Tls is NULL.\r
+ @retval EFI_PROTOCOL_ERROR Some other error occurred.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+TlsShutdown (\r
+ IN VOID *Tls\r
+ )\r
+{\r
+ TLS_CONNECTION *TlsConn;\r
+\r
+ TlsConn = (TLS_CONNECTION *)Tls;\r
+\r
+ if ((TlsConn == NULL) || ((TlsConn->Ssl) == NULL)) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
+ SSL_set_quiet_shutdown (TlsConn->Ssl, 1);\r
+ SSL_shutdown (TlsConn->Ssl);\r
+ return SSL_clear (TlsConn->Ssl) == 1 ? EFI_SUCCESS : EFI_PROTOCOL_ERROR;\r
+}\r