socket.cc (10049:801519c624e4) socket.cc (10412:6400a2ab4e22)
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;

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

89 if (::setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&i,
90 sizeof(i)) < 0)
91 panic("ListenSocket(listen): setsockopt() SO_REUSEADDR failed!");
92 }
93
94 struct sockaddr_in sockaddr;
95 sockaddr.sin_family = PF_INET;
96 sockaddr.sin_addr.s_addr = INADDR_ANY;
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;

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

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

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

121int
122ListenSocket::accept(bool nodelay)
123{
124 struct sockaddr_in sockaddr;
125 socklen_t slen = sizeof (sockaddr);
126 int sfd = ::accept(fd, (struct sockaddr *)&sockaddr, &slen);
127 if (sfd != -1 && nodelay) {
128 int i = 1;
100 int ret = ::bind(fd, (struct sockaddr *)&sockaddr, sizeof (sockaddr));
101 if (ret != 0) {
102 if (ret == -1 && errno != EADDRINUSE)
103 panic("ListenSocket(listen): bind() failed!");
104 return false;
105 }
106
107 if (::listen(fd, 1) == -1) {

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

122int
123ListenSocket::accept(bool nodelay)
124{
125 struct sockaddr_in sockaddr;
126 socklen_t slen = sizeof (sockaddr);
127 int sfd = ::accept(fd, (struct sockaddr *)&sockaddr, &slen);
128 if (sfd != -1 && nodelay) {
129 int i = 1;
129 ::setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, (char *)&i, sizeof(i));
130 if (::setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, (char *)&i,
131 sizeof(i)) < 0)
132 warn("ListenSocket(accept): setsockopt() TCP_NODELAY failed!");
130 }
131
132 return sfd;
133}
133 }
134
135 return sfd;
136}