--- a/model/linux-socket-fd-factory.cc Wed Oct 09 11:35:38 2013 +0900
+++ b/model/linux-socket-fd-factory.cc Wed Oct 09 14:05:04 2013 +0900
@@ -882,13 +882,13 @@
return retval;
}
int
-LinuxSocketFdFactory::Accept (struct SimSocket *socket, struct sockaddr *my_addr, socklen_t *addrlen)
+LinuxSocketFdFactory::Accept (struct SimSocket *socket, struct sockaddr *my_addr, socklen_t *addrlen, int flags)
{
- GET_CURRENT (socket << my_addr << addrlen);
+ GET_CURRENT (socket << my_addr << addrlen << flags);
struct SimSocket *newSocket;
// XXX: handle O_NONBLOCK
m_loader->NotifyStartExecute ();
- int retval = m_exported->sock_accept (socket, &newSocket, 0);
+ int retval = m_exported->sock_accept (socket, &newSocket, flags);
m_loader->NotifyEndExecute ();
if (retval < 0)
{
--- a/model/linux-socket-fd-factory.h Wed Oct 09 11:35:38 2013 +0900
+++ b/model/linux-socket-fd-factory.h Wed Oct 09 14:05:04 2013 +0900
@@ -65,7 +65,7 @@
int Connect (struct SimSocket *socket, const struct sockaddr *my_addr, socklen_t addrlen, int flags);
int Listen (struct SimSocket *socket, int backlog);
int Shutdown (struct SimSocket *socket, int how);
- int Accept (struct SimSocket *socket, struct sockaddr *my_addr, socklen_t *addrlen);
+ int Accept (struct SimSocket *socket, struct sockaddr *my_addr, socklen_t *addrlen, int flags);
int Ioctl (struct SimSocket *socket, int request, char *argp);
int Setsockopt (struct SimSocket *socket, int level, int optname,
const void *optval, socklen_t optlen);
--- a/model/linux-socket-fd.cc Wed Oct 09 11:35:38 2013 +0900
+++ b/model/linux-socket-fd.cc Wed Oct 09 14:05:04 2013 +0900
@@ -132,7 +132,7 @@
int
LinuxSocketFd::Accept (struct sockaddr *my_addr, socklen_t *addrlen)
{
- return m_factory->Accept (m_socket, my_addr, addrlen);
+ return m_factory->Accept (m_socket, my_addr, addrlen, m_statusFlags);
}
void *
LinuxSocketFd::Mmap (void *start, size_t length, int prot, int flags, off64_t offset)