int poll (struct pollfd *fds, unsigned nfds, int timeout);
#endif
-
-/*****************************************************************************
- * net_StopRecv/Send
- *****************************************************************************
- * Wrappers for shutdown()
- *****************************************************************************/
-#if defined (SHUT_WR)
-/* the standard way */
-# define net_StopSend( fd ) (void)shutdown( fd, SHUT_WR )
-# define net_StopRecv( fd ) (void)shutdown( fd, SHUT_RD )
-#elif defined (SD_SEND)
-/* the Microsoft seemingly-purposedly-different-for-the-sake-of-it way */
-# define net_StopSend( fd ) (void)shutdown( fd, SD_SEND )
-# define net_StopRecv( fd ) (void)shutdown( fd, SD_RECEIVE )
-#else
-# ifndef SYS_BEOS /* R5 just doesn't have a working shutdown() */
-# warning FIXME: implement shutdown on your platform!
-# endif
-# define net_StopSend( fd ) (void)0
-# define net_StopRecv( fd ) (void)0
-#endif
-
#ifdef WIN32
+/* Microsoft: same semantic, same value, different name... go figure */
+# define SHUT_RD SD_RECEIVE
+# define SHUT_WR SD_SEND
+# define SHUT_BOTH
# define net_Close( fd ) closesocket ((SOCKET)fd)
#else
# define net_Close( fd ) close (fd)
return VLC_EGENERIC;
}
- if( p_access->i_object_type == VLC_OBJECT_ACCESS )
- net_StopSend( p_sys->fd_data );
- else
- net_StopRecv( p_sys->fd_data );
+ shutdown( p_sys->fd_data,
+ ( p_access->i_object_type == VLC_OBJECT_ACCESS ) );
return VLC_SUCCESS;
}
return VLC_EGENERIC;
}
- net_StopSend( p_sys->fd );
+ shutdown( p_sys->fd, SHUT_WR );
#ifdef UDPLITE_RECV_CSCOV
if (proto == IPPROTO_UDPLITE)
}
}
p_sys->p_thread->i_handle = i_handle;
- net_StopRecv( i_handle );
+ shutdown( i_handle, SHUT_RD );
#ifdef UDPLITE_SEND_CSCOV
if (proto == IPPROTO_UDPLITE)
return VLC_EGENERIC;
}
- net_StopRecv( i_handle );
+ shutdown( i_handle, SHUT_RD );
if( send( i_handle, p_data, i_offset, 0 )
== -1 )
{
if (i_fd == -1)
return VLC_EGENERIC;
- net_StopSend( i_fd );
+ shutdown( i_fd, SHUT_WR );
INSERT_ELEM (p_sd->p_sys->pi_fd, p_sd->p_sys->i_fd,
p_sd->p_sys->i_fd, i_fd);
return VLC_SUCCESS;
p_address->i_wfd = net_ConnectUDP( VLC_OBJECT(p_sap), psz_addr, SAP_PORT, 255 );
if( p_address->i_wfd != -1 )
{
- net_StopRecv( p_address->i_wfd );
+ shutdown( p_address->i_wfd, SHUT_RD );
p_address->origlen = sizeof (p_address->orig);
getsockname (p_address->i_wfd, (struct sockaddr *)&p_address->orig,
&p_address->origlen);
{
p_address->i_rfd = net_ListenUDP1( (vlc_object_t*)p_sap, psz_addr, SAP_PORT );
if( p_address->i_rfd != -1 )
- net_StopSend( p_address->i_rfd );
+ shutdown( p_address->i_rfd, SHUT_WR );
p_address->i_buff = 0;
p_address->b_enabled = VLC_TRUE;
p_address->b_ready = VLC_FALSE;