Deleted Added
sdiff udiff text old ( 2665:a124942bacb8 ) new ( 5523:6279e78a2df2 )
full compact
1/*
2 * Copyright (c) 2002-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 29 unchanged lines hidden (view full) ---

38#include <unistd.h>
39
40#include "sim/host.hh"
41#include "base/misc.hh"
42#include "base/socket.hh"
43
44using namespace std;
45
46////////////////////////////////////////////////////////////////////////
47//
48//
49
50ListenSocket::ListenSocket()
51 : listening(false), fd(-1)
52{}
53

--- 33 unchanged lines hidden (view full) ---

87 return false;
88 }
89
90 if (::listen(fd, 1) == -1)
91 panic("ListenSocket(listen): listen() failed!");
92
93 listening = true;
94
95 return true;
96}
97
98
99// Open a connection. Accept will block, so if you don't want it to,
100// make sure a connection is ready before you call accept.
101int
102ListenSocket::accept(bool nodelay)
103{
104 struct sockaddr_in sockaddr;
105 socklen_t slen = sizeof (sockaddr);
106 int sfd = ::accept(fd, (struct sockaddr *)&sockaddr, &slen);
107 if (sfd != -1 && nodelay) {
108 int i = 1;
109 ::setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, (char *)&i, sizeof(i));
110 }
111
112 return sfd;
113}