Deleted Added
sdiff udiff text old ( 11793:ef606668d247 ) new ( 12010:032f2717dfb7 )
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;

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

35#include <sys/socket.h>
36#include <sys/types.h>
37#include <unistd.h>
38
39#include <cerrno>
40
41#include "base/misc.hh"
42#include "base/types.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

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

89 int i = 1;
90 if (::setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&i,
91 sizeof(i)) < 0)
92 panic("ListenSocket(listen): setsockopt() SO_REUSEADDR failed!");
93 }
94
95 struct sockaddr_in sockaddr;
96 sockaddr.sin_family = PF_INET;
97 sockaddr.sin_addr.s_addr = INADDR_ANY;
98 sockaddr.sin_port = htons(port);
99 // finally clear sin_zero
100 memset(&sockaddr.sin_zero, 0, sizeof(sockaddr.sin_zero));
101 int ret = ::bind(fd, (struct sockaddr *)&sockaddr, sizeof (sockaddr));
102 if (ret != 0) {
103 if (ret == -1 && errno != EADDRINUSE)
104 panic("ListenSocket(listen): bind() failed!");
105 return false;

--- 32 unchanged lines hidden ---