[haiku-commits] Re: haiku: hrev50368 - src/kits/network/libnetapi headers/os/net

  • From: "Adrien Destugues" <pulkomandy@xxxxxxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 28 Jun 2016 07:47:25 +0000

28 juin 2016 09:38 "Axel Dörfler" <axeld@xxxxxxxxxxxxxxxx> a écrit:

Am 27/06/2016 um 07:20 schrieb Adrien Destugues:

I think it is a good idea to provide a higher level API to developers.
If we require the server name to be set twice when working with SSL (or
HTTPS), the API will be more flexible, but more confusing. It is known
that a lot of apps working irectly with OpenSSL run into security
problems because so many things need to be checked or done manually:
SNI, requesting validation of the certificate chain, etc.

I disagree. How about adding constructors to BSecureSocket like those in 
BNetworkAddress instead:

BNetworkAddress(const char* address,
uint16 port = 0, uint32 flags = 0);
BNetworkAddress(const char* address,
const char* service, uint32 flags = 0);
BNetworkAddress(int family, const char* address,
uint16 port = 0, uint32 flags = 0);
BNetworkAddress(int family, const char* address,
const char* service, uint32 flags = 0);

Then the API is not the same as in BSocket anymore.

Another option would be to add a class BHostAddress that contains a 
BNetworkAddress and a host
name.

Then we need to make BSecureSocket accept a BHostAddress in the constructor, 
and for consistency we need to make the same change to BSocket. We probably 
need to remove BNetworkAddress from at least BSecureSocket constructor to avoid 
accidental misuse of the wrong class (since BHostAddress and BNetworkSocket 
would have exactly the same API, it would be too confusing otherwise). Then 
BNetworkAddress would become quite useless.

But please leave BNetworkAddress as it is, er... was :-)

Does that include the already existing HostName() method returning an empty 
string? :o)

-- 
Adrien.

Other related posts: