openssl s_server: don't use sendto() with connected UDP socket
authorMatthew Hodgson <matthew@matrix.org>
Wed, 21 Nov 2018 02:00:52 +0000 (02:00 +0000)
committerDr. Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
Wed, 21 Nov 2018 20:04:38 +0000 (21:04 +0100)
commitb92678f4e94eeec468f194333f874906a6fff7f1
tree1b782ba002c08313899596364ccbaeca7a161669
parent2cc3f68cde77af23c61fbad65470602ee86f2575
openssl s_server: don't use sendto() with connected UDP socket

Fixes #7675

On macOS, if you call `connect()` on a UDP socket you cannot then
call `sendto()` with a destination, otherwise it fails with Err#56
('socket is already connected').

By calling `BIO_ctrl_set_connected()` on the wbio we can tell it
that the socket has been connected and make it call `send()` rather
than `sendto()`.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/7676)
apps/s_server.c