#ifdef IPV6_V6ONLY
/*
- * Accepts only IPv6 and IPv4 connections on IPv6 sockets.
+ * Accepts only IPv6 connections on IPv6 sockets.
* If possible, we should open two sockets, but it is not always possible.
*/
if (family == AF_INET6)
- setsockopt (fd, IPPROTO_IPV6, IPV6_V6ONLY, &(int){ 0 }, sizeof (int));
+ setsockopt (fd, IPPROTO_IPV6, IPV6_V6ONLY, &(int){ 1 }, sizeof (int));
#endif
#if defined (WIN32) || defined (UNDER_CE)
case SOCK_STREAM:
case SOCK_RDM:
case SOCK_SEQPACKET:
+#ifdef SOCK_DCCP
+ case SOCK_DCCP:
+#endif
if (listen (fd, INT_MAX))
{
msg_Err (p_this, "socket listen error (%s)",
}
-int net_ListenSingle (vlc_object_t *obj, const char *host, int port,
- int family, int socktype, int protocol)
-{
- int *fdv = net_Listen (obj, host, port, family, socktype, protocol);
- if (fdv == NULL)
- return -1;
-
- for (unsigned i = 1; fdv[i] != -1; i++)
- {
- msg_Warn (obj, "Multiple sockets opened. Dropping extra ones!");
- net_Close (fdv[i]);
- }
-
- int fd = fdv[0];
- assert (fd != -1);
-
- free (fdv);
- return fd;
-}
-
-
-
static ssize_t
net_ReadInner (vlc_object_t *restrict p_this, unsigned fdc, const int *fdv,
const v_socket_t *const *restrict vsv,
while (i_buflen > 0)
{
- if (p_this->b_die)
+ if( ( p_this->b_die ) || ( p_this->p_libvlc->b_die ) )
{
#if defined(WIN32) || defined(UNDER_CE)
WSASetLastError (WSAEINTR);
switch (poll (ufd, fdc, 500))
{
case -1:
- if( errno == EINTR )
- continue;
goto error;
case 0: // timeout
switch (val)
{
case -1:
- if( errno == EINTR )
- continue;
msg_Err (p_this, "Write error: %s", net_strerror (net_errno));
goto out;
memset(&addr, 0, sizeof(addr));
addr.sin6_family = AF_INET6;
addr.sin6_addr = *((struct in6_addr*)src);
- if( 0 == WSAAddressToStringA((LPSOCKADDR)&addr,
- sizeof(struct sockaddr_in6),
+ if( 0 == WSAAddressToStringA((LPSOCKADDR)&addr,
+ sizeof(struct sockaddr_in6),
NULL, dst, &cnt) )
{
dst[cnt] = '\0';