我正在尝试将 Hết thời gianMixin
Được tích hợp vào các giao thức dựa trên SSL. Tuy nhiên, khi hết thời gian chờ và nó gọi vận chuyển.loseConnection()
, không có gì xảy ra cả. Tôi nghĩ điều này có liên quan mã này trong TLSMemoryBIOProtocol có liên quan:
def _shutdownTLS(tự):
"""
Bắt đầu hoặc trả lời quá trình bắt tay tắt máy của lớp TLS.
"""
thử:
tắt máySuccess = self._tlsConnection.shutdown()
ngoại trừ Lỗi:
# Khi bắt tay giữa chừng, lệnh gọi tới lệnh tắt máy() có thể dẫn đến kết quả
# WantWantReadError, hay đúng hơn là SSL_ERR_WANT_READ nhưng pyOpenSSL;
# không cho phép chúng tôi nhận được lỗi. Xem:
#https://github.com/pyca/pyopenssl/issues/91
tắt máyThành công = Sai
self._flushSendBIO()
nếu tắt máy Thành công:
# Cả hai bên đều đã tắt máy nên chúng ta có thể bắt đầu đóng cấp độ thấp hơn
# vận chuyển Điều này cũng sẽ xảy ra nếu chúng ta chưa bắt đầu.
# chưa đàm phán xong, trong trường hợp đó việc tắt máy thành công
# ngay lập tức.
self.transport.loseConnection()
Vấn đề là thời gian chờ xảy ra trước khi bắt tay. Về phía máy chủ, nó có một cổng mở lắng nghe các kết nối, nhưng máy chủ bị kẹt và không thể bắt tay đúng cách. Đoạn mã này có vẻ như không thực hiện được việc tắt TLS và sau đó không làm gì cả.
我的问题是:
Làm cách nào để đặt thời gian chờ bắt tay SSL? Làm cách nào để ngắt kết nối đúng cách nếu việc bắt tay không diễn ra trong một khoảng thời gian hợp lý? Ngoài ra, có vấn đề gì khi thay đổi đoạn mã trên để hủy kết nối cấp thấp hơn bất kể kết nối TLS có bị hủy không? (Chỉ không làm gì và treo vô thời hạn có vẻ không phải là cách tiếp cận đúng đắn)
biên tập:
gọi mấtKết nối
Lỗi dường như xảy ra nếu bất kỳ dữ liệu nào đã được gửi trước đó hoặc nếu không có dữ liệu nào được gửi thì có vẻ như nó vẫn hoạt động tốt.
mấtKết nối
Là một API để đóng các kết nối có trật tự. Nếu bạn muốn chấm dứt kết nối đột ngột,hủy bỏkết nối
là API dành cho bạn.
Tôi là một lập trình viên xuất sắc, rất giỏi!