Ejemplo n.º 1
0
int CServerSocket::UnixAccept(CClientSocket& socket)
{
  printf("CServerSocket::Accept\n");  
  struct sockaddr_un client;
  socklen_t clientlen = sizeof(client);

  if (m_sock == -1)
  {
    m_error = "socket closed";
    return FAIL;
  }

  int returnv = WaitForSocket(false, "Accept");  //wait for socket to become readable
  if (returnv == FAIL || returnv == TIMEOUT)
    return returnv;
  
  int sock = accept(m_sock, reinterpret_cast<struct sockaddr*>(&client), &clientlen);
  if (sock < 0)
  {
    m_error = "accept() " + GetErrno();
    return FAIL;
  }
  
  socket.SetInfo(SERVER_PATH, 19333, sock);
  /*
  if (socket.SetInfo(inet_ntoa(client.sun_addr), ntohs(client.sun_port), sock) != SUCCESS)
  {
    m_error = socket.GetError();
    return FAIL;
  }*/
  
  return SUCCESS;
}