bufferevent_ssl.c

Branch


Log

Author Commit Date CI Message
Azat Khuzhin 5412b2c3 2024-02-18T19:40:00 bufferevent_ssl: fix freeing ctx in case of error in bufferevent_ssl_new_impl
Azat Khuzhin c9793baa 2024-02-18T19:39:50 bufferevent_ssl: proper NULL checks
Azat Khuzhin 2f27523e 2024-02-18T18:22:21 bufferevent_ssl: do not return NULL from upcast /src/le/libevent/bufferevent_ssl.c:863: error: Null Dereference pointer `bev_ssl` last assigned on line 855 could be null and is dereferenced at line 863, column 6. 861. r2 = start_writing(bev_ssl); 862. 863. if (bev_ssl->underlying) { ^ 864. if (events & EV_READ) 865. BEV_RESET_GENERIC_READ_TIMEOUT(bev);
Azat Khuzhin 49a7ae4c 2023-05-16T21:14:34 ssl: add some comments for lack of notify_close
Thuan Tran ef51444f 2023-05-15T10:18:38 More SSL_read() to fill big buffer Once SSL_read() only get max 16K bytes (one TLS record). In case of big buffer, should more SSL_read() to fill the buffer. Using sample https-client to measure max income MBit/s via nload tool. Note: set bufferevent_set_max_single_read() by 32K and add the chunk callback to read out each piece of data. The client sample do https request a data 900KB (the server don't use Transfer-Encoding: chunked) - With origin/master: max income is 2.26 MBit/s The chunk callback never get a piece of data > 16K. - With this PR: max income is 2.44 MBit/s The chunk callback can get some piece of data 32K or more.
Thuan Tran 4ab3242d 2023-05-15T19:57:38 Make bufferevent_set_max_single_read() effect
Azat Khuzhin 7652cf40 2023-05-14T16:53:13 ssl: do not triger EOF if some data had been successfully read Previously in case when evbuffer_reserve_space() returns > 1, but it was able to read only 1 IO vector, it will try to read the next one, got 0 (EOF for mbedTLS or SSL_ERROR_ZERO_RETURN for OpenSSL) and will trigger EOF, while instead, it should trigger EV_READ w/o EOF and only after EOF.
Azat Khuzhin 6375dcb4 2023-05-14T16:45:14 ssl: rename err_is_ok to handshake_is_ok (internal API)
zhenhaonong fc568ff0 2023-03-17T19:53:50 Deal with partial writes on SSL write SSL write may do partial writes in some cases. For example, document of mbedtls_ssl_write says: If the return value is non-negative but less than length, the function must be called again with updated arguments: buf + ret, len - ret (if ret is the return value) until it returns a value equal to the last 'len' argument. In case of partial writes, we should continue writing the same chain of buffer, not the next chain.
Azat Khuzhin 41b5ab0f 2021-09-19T00:39:30 bufferevent_ssl: check return value of the evbuffer_drain() Refs: #1163
Azat Khuzhin 59e31c96 2020-11-05T00:57:39 Do not try to do SSL handshake if the connect() fails This will avoid this icky error: $ https-client -4 -url https://127.1 some request failed - no idea which one though! error:00000005:lib(0):func(0):DH lib And instead will report only: $ https-client -4 -url https://127.1 some request failed - no idea which one though! socket error = Connection refused (111) Refs: #1115
Azat Khuzhin a490172d 2020-10-31T22:53:31 Introduce new BUFFEREVENT_SSL_BATCH_WRITE flag to avoid Nagle effect in SSL
Azat Khuzhin 7e0fc878 2020-10-31T21:45:22 Introduce new API for flags of the SSL bufferevent Introduce more generic API (like for evbuffer): - bufferevent_ssl_set_flags() - bufferevent_ssl_clear_flags() - bufferevent_ssl_get_flags() And deprecate existing: - bufferevent_openssl_get_allow_dirty_shutdown() - bufferevent_openssl_set_allow_dirty_shutdown() - bufferevent_mbedtls_get_allow_dirty_shutdown() - bufferevent_mbedtls_set_allow_dirty_shutdown()
Azat Khuzhin 5671575a 2020-07-22T23:08:50 Join le_ssl_ops.post_init with le_ssl_ops.init
okhowang(王沛文) d095b834 2020-07-07T17:26:46 Merge ssl implementations (openssl and mbedtls) This patch splits common part out to avoid copy-paste from the - bufferevent_openssl.c - bufferevent_mbedtls.c It uses VFS/bufferevent-like approach, i.e. structure of callbacks.