ustream-io-cyassl.c: fix client-mode connections
authorEneas U de Queiroz <cotequeiroz@gmail.com>
Thu, 19 Sep 2019 02:18:02 +0000 (23:18 -0300)
committerHauke Mehrtens <hauke@hauke-m.de>
Fri, 20 Sep 2019 18:48:23 +0000 (20:48 +0200)
commit33308eebda34c90455dbce825fac112a987c0ecd
tree36db8dc16f02841c3db2464e8d4cde75ef1ad4f2
parent79d91aa6e7f2fe544a4953fbae1c8bdcdba78099
ustream-io-cyassl.c: fix client-mode connections

Starting in v3.13.2, wolfSSL stores the BIO send and recv callbacks
in the SSL struct.  When the SSL session is created, it inherits the
calls from the SSL_CTX, but they do not get updated when the SSL_CTX
callbacks are changed.

Currently, ustream-ssl sets the callbacks after the SSL session is
created, causing failures.  Client apps, such as uclient-fetch fail
immediately to connect to https URLs with a 'Connection failed' error
message.  uhttpd seems unaffected.

New calls to set them directly to the SSL struct were added in 4.1.0, so
we can use them, with a check in CMakeLists.txt to detect their
presence.  Otherwise, another call to ustream_set_io is done before
creating the SSL session to properly set the callbacks.

Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
CMakeLists.txt
ustream-io-wolfssl.c
ustream-ssl.c