openssl
koyu tekniğin bir parçasıdır.
Öncelikle, başvuruda bulunduğunuz sayfanın dönüş değerlerini hatalı bir şekilde HTML'ye sahip olması gerekir. İşte insan sayfa aslında söylüyor:
RETURN VALUES
The following return values can occur:
0 The shutdown is not yet finished. Call SSL_shutdown() for a second
time, if a bidirectional shutdown shall be performed. The output
of SSL_get_error(3) may be misleading, as an erroneous
SSL_ERROR_SYSCALL may be flagged even though no error occurred.
1 The shutdown was successfully completed. The "close notify" alert
was sent and the peer's "close notify" alert was received.
-1 The shutdown was not successful because a fatal error occurred
either at the protocol level or a connection failure occurred. It
can also occur if action is need to continue the operation for non-
blocking BIOs. Call SSL_get_error(3) with the return value ret to
find out the reason.
BIOS engelleme varsa, işler nispeten basittir. İlk aramada 0, çift yönlü bir kapatma yapmak isterseniz SSL_shutdown
numaralı telefonu tekrar aramanız gerektiği anlamına gelir. 1, bittiğin anlamına gelir. A -1 bir hata demektir. İkinci çağrıda (sadece 0'ınız varsa), çift yönlü bir kapatma başlatılır. Mantık, tekrar 0 alamadığınızı belirtir (çünkü engelleme BIO'dur ve ilk adımı tamamlamış olur). A -1 bir hatayı gösterir ve 1'i tamamlandığını gösterir.
olmayan engelleme Bios varsa, aynı geçerlidir, tüm SSL_ERROR_WANT_READ
ve SSL_ERROR_WANT_WRITE
tekerleme geçmesi gerekir aslında, yani .:
If the underlying BIO is non-blocking, SSL_shutdown() will also return
when the underlying BIO could not satisfy the needs of SSL_shutdown()
to continue the handshake. In this case a call to SSL_get_error() with
the return value of SSL_shutdown() will yield SSL_ERROR_WANT_READ or
SSL_ERROR_WANT_WRITE. The calling process then must repeat the call
after taking appropriate action to satisfy the needs of SSL_shutdown().
The action depends on the underlying BIO. When using a non-blocking
socket, nothing is to be done, but select() can be used to check for
the required condition. When using a buffering BIO, like a BIO pair,
data must be written into or retrieved out of the BIO before being able
to continue.
Yani tekrarlama iki düzeyine sahip için kaydedin. SSL_shutdown
'u 'ilk' zaman olarak adlandırın, ancak select()
döngüsünü normal şekilde dolaştıktan sonra SSL_ERROR_WANT_READ
veya SSL_ERROR_WANT_WRITE
döngüsünü alırsanız yineleyin ve SSL_ERROR_WANT_
olmayan bir hata kodu alırsanız, yalnızca 'ilk' SSL_shutdown
değerini tamamlayın. başarısız oldu) veya bir 0
veya 1
dönüşüne sahip olursunuz. Bir 1
getiri alırsanız, bitirdiniz. Bir 0
dönüşü alırsanız ve çift yönlü bir kapatma işlemi yapmak isterseniz, ikinci aramayı yapmanız gerekir, bunun için tekrar SSL_ERROR_WANT_READ
veya SSL_ERROR_WANT_WRITE
için kontrol etmeniz ve yeniden deneme seçimini yapmanız gerekir; Bu 1
dönmemelidir, ancak 0 veya bir hata döndürebilir.
Kolay değil.
Teşekkürler! çok takdir yardım. – cmidi