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} |