return __net_Connect (obj, host, port, SOCK_STREAM, IPPROTO_TCP);
}
+
+VLC_EXPORT( int, net_AcceptSingle, (vlc_object_t *obj, int lfd) );
+
#define net_Accept(a, b, c) __net_Accept(VLC_OBJECT(a), b, c)
VLC_EXPORT( int, __net_Accept, ( vlc_object_t *, int *, mtime_t ) );
if (ufd[ncli + i].revents == 0)
continue;
- fd = accept (ufd[ncli + i].fd, NULL, NULL);
+ fd = net_AcceptSingle (VLC_OBJECT(p_intf), ufd[ncli + i].fd);
if (fd == -1)
continue;
{
httpd_client_t *cl;
int i_state = -1;
+ int fd = ufd[nfd].fd;
- assert (ufd[nfd].fd == host->fds[nfd]);
+ assert (fd == host->fds[nfd]);
if( ufd[nfd].revents == 0 )
continue;
/* */
- int fd = accept (ufd[nfd].fd, NULL, NULL);
+ fd = accept (fd, NULL, NULL);
if (fd == -1)
continue;
+ net_SetupSocket (fd);
if( p_tls != NULL )
{
switch( tls_ServerSessionHandshake( p_tls, fd ) )
}
+int net_AcceptSingle (vlc_object_t *obj, int lfd)
+{
+ int fd = accept (lfd, NULL, NULL);
+ if (fd == -1)
+ {
+ if (net_errno != EAGAIN)
+ msg_Err (obj, "accept failed (from socket %d): %m", lfd);
+ return -1;
+ }
+
+ msg_Dbg (obj, "accepted socket %d (from socket %d)", fd, lfd);
+ net_SetupSocket (fd);
+ return 0;
+}
+
+
/*****************************************************************************
* __net_Accept:
*****************************************************************************
continue;
int sfd = ufd[i].fd;
- int fd = accept (sfd, NULL, NULL);
+ int fd = net_AcceptSingle (p_this, sfd);
if (fd == -1)
- {
- msg_Err (p_this, "accept failed (%m)");
continue;
- }
- net_SetupSocket (fd);
/*
* Move listening socket to the end to let the others in the
memmove (pi_fd + i, pi_fd + i + 1, n - (i + 1));
pi_fd[n - 1] = sfd;
vlc_object_unlock (p_this);
- msg_Dbg (p_this, "accepted socket %d (from socket %d)", fd, sfd);
return fd;
}
}