ASSERT (addrinfo);
ASSERT (addrinfo->ai_socktype == SOCK_STREAM);
- ASSERT (addrinfo->ai_protocol == IPPROTO_TCP);
if ((sd = socket (addrinfo->ai_family, addrinfo->ai_socktype, addrinfo->ai_protocol)) < 0)
msg (M_ERR, "Cannot create TCP socket");
ASSERT (addrinfo);
ASSERT (addrinfo->ai_socktype == SOCK_DGRAM);
- ASSERT (addrinfo->ai_protocol == IPPROTO_UDP);
if ((sd = socket (addrinfo->ai_family, addrinfo->ai_socktype, addrinfo->ai_protocol)) < 0)
msg (M_ERR, "UDP: Cannot create UDP/UDP6 socket");
static void
create_socket (struct link_socket* sock, struct addrinfo* addr)
{
- if (addr->ai_protocol == IPPROTO_UDP)
+ if (addr->ai_protocol == IPPROTO_UDP || addr->ai_socktype == SOCK_DGRAM)
{
sock->sd = create_socket_udp (addr, sock->sockflags);
sock->sockflags |= SF_GETADDRINFO_DGRAM;
}
#endif
}
- else if (addr->ai_protocol == IPPROTO_TCP)
+ else if (addr->ai_protocol == IPPROTO_TCP || addr->ai_socktype == SOCK_STREAM)
{
sock->sd = create_socket_tcp (addr);
}
const bool proxy_retry = false;
#endif
do {
- ASSERT (sock->info.lsa->current_remote->ai_protocol == IPPROTO_TCP);
socket_connect (&sock->sd,
sock->info.lsa->current_remote->ai_addr,
sock->connect_timeout,