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
46bool ListenSocket::listeningDisabled = false;
47bool ListenSocket::anyListening = false;
48
49void
50ListenSocket::disableAll()
51{
52 if (anyListening)
53 panic("Too late to disable all listeners, already have a listener");
54 listeningDisabled = true;
55}
56
57bool
58ListenSocket::allDisabled()
59{
60 return listeningDisabled;
61}
62
63////////////////////////////////////////////////////////////////////////
64//
65//
66
67ListenSocket::ListenSocket()
68 : listening(false), fd(-1)
69{}
70

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

104 return false;
105 }
106
107 if (::listen(fd, 1) == -1)
108 panic("ListenSocket(listen): listen() failed!");
109
110 listening = true;
111
112 anyListening = true;
113 return true;
114}
115
116
117// Open a connection. Accept will block, so if you don't want it to,
118// make sure a connection is ready before you call accept.
119int
120ListenSocket::accept(bool nodelay)
121{
122 struct sockaddr_in sockaddr;
123 socklen_t slen = sizeof (sockaddr);
124 int sfd = ::accept(fd, (struct sockaddr *)&sockaddr, &slen);
125 if (sfd != -1 && nodelay) {
126 int i = 1;
127 ::setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, (char *)&i, sizeof(i));
128 }
129
130 return sfd;
131}