2012-08-06 39 views
10

khi máy chủ được viết bằng openssl is'nt gọi SSL_accept, SSL_connect của khách hàng sẽ bị chặn vĩnh viễn. Có một số chức năng hết thời gian chờ trong openssl -SSL_CTX_set_timeout, SSL_SESSION_set_timeout nhưng những điều này không ảnh hưởng đến SSL_connect.openssl ssl_connect blocks mãi mãi - cách đặt thời gian chờ?

Có thực sự không có cách nào để đặt thời gian chờ cho SSL_connect khi ví dụ: ssl server là lỗi và đi vào vòng lặp trước khi bắt tay SSL?

Trả lời

10

Thư viện OpenSSL mang lại cho bạn sự linh hoạt tối đa về xử lý các sự cố liên quan đến ổ cắm. Các khối SSL_connect trong trường hợp của bạn bởi vì bạn phải sử dụng nó với một ổ cắm chặn. Vui lòng sử dụng nó với một ổ cắm không chặn, trong trường hợp này nó sẽ trở lại với -1. Nếu bạn gọi hàm SSL_get_error sẽ cho bạn lỗi SSL_ERROR_WANT_READ hoặc SSL_ERROR_WANT_WRITE tùy thuộc vào thời điểm tcp recv hoặc send không thể hoàn thành thao tác tương ứng.

Khi thu được SSL_ERROR_WANT_WRITE/SSL_ERROR_WANT_READ, bạn phải gọi hàm chọn bằng cách chuyển socket đến fd_set và thời gian chờ phù hợp. Nếu chọn thời gian, bạn có thể xem xét SSL_connect của mình để hết thời gian chờ.

Lưu ý:SSL_SESSION_set_timeout được sử dụng để đặt giá trị thời gian chờ của phiên được liên kết với tiếp tục SSL. Họ không có gì để làm với thời gian ra một kết nối.

Các liên kết dưới đây sẽ giúp bạn (đặc biệt là liên kết thứ hai, Phần 6 mà nói về ghép I/O):

+0

:(tài nguyên liên kết chuyển –

+0

đây là một số liên kết khác tới các tệp PDF đó: [part1] (http://vanets.vuse.vanderbilt.edu/dokuwiki/lib/exe/fetch.php?media=resource:part1.pdf) và [part2] (http: //vanets.vuse.vanderbilt.edu/dokuwiki/lib/exe/fetch.php?media=resource:part2.pdf). pe này giúp! – Castaglia

Các vấn đề liên quan