Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(136)

Side by Side Diff: runtime/bin/socket_android.cc

Issue 14139032: Fix broken Mac OS socket code (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/bin/socket.h ('k') | runtime/bin/socket_linux.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "platform/globals.h" 5 #include "platform/globals.h"
6 #if defined(TARGET_OS_ANDROID) 6 #if defined(TARGET_OS_ANDROID)
7 7
8 #include <errno.h> // NOLINT 8 #include <errno.h> // NOLINT
9 #include <stdio.h> // NOLINT 9 #include <stdio.h> // NOLINT
10 #include <stdlib.h> // NOLINT 10 #include <stdlib.h> // NOLINT
(...skipping 22 matching lines...) Expand all
33 33
34 bool Socket::Initialize() { 34 bool Socket::Initialize() {
35 // Nothing to do on Android. 35 // Nothing to do on Android.
36 return true; 36 return true;
37 } 37 }
38 38
39 39
40 intptr_t Socket::CreateConnect(RawAddr addr, const intptr_t port) { 40 intptr_t Socket::CreateConnect(RawAddr addr, const intptr_t port) {
41 intptr_t fd; 41 intptr_t fd;
42 42
43 fd = TEMP_FAILURE_RETRY(socket(addr.ss_family, SOCK_STREAM, 0)); 43 fd = TEMP_FAILURE_RETRY(socket(addr.ss.ss_family, SOCK_STREAM, 0));
44 if (fd < 0) { 44 if (fd < 0) {
45 Log::PrintErr("Error CreateConnect: %s\n", strerror(errno)); 45 Log::PrintErr("Error CreateConnect: %s\n", strerror(errno));
46 return -1; 46 return -1;
47 } 47 }
48 48
49 FDUtils::SetCloseOnExec(fd); 49 FDUtils::SetCloseOnExec(fd);
50 Socket::SetNonBlocking(fd); 50 Socket::SetNonBlocking(fd);
51 51
52 SocketAddress::SetAddrPort(&addr, port); 52 SocketAddress::SetAddrPort(&addr, port);
53 intptr_t result = TEMP_FAILURE_RETRY( 53 intptr_t result = TEMP_FAILURE_RETRY(
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 RawAddr raw; 113 RawAddr raw;
114 socklen_t size = sizeof(raw); 114 socklen_t size = sizeof(raw);
115 if (TEMP_FAILURE_RETRY( 115 if (TEMP_FAILURE_RETRY(
116 getpeername(fd, 116 getpeername(fd,
117 &raw.addr, 117 &raw.addr,
118 &size))) { 118 &size))) {
119 Log::PrintErr("Error getpeername: %s\n", strerror(errno)); 119 Log::PrintErr("Error getpeername: %s\n", strerror(errno));
120 return false; 120 return false;
121 } 121 }
122 const void* src; 122 const void* src;
123 if (raw.ss_family == AF_INET6) { 123 if (raw.ss.ss_family == AF_INET6) {
124 src = reinterpret_cast<const void*>(&raw.in6.sin6_addr); 124 src = reinterpret_cast<const void*>(&raw.in6.sin6_addr);
125 } else { 125 } else {
126 src = reinterpret_cast<const void*>(&raw.in.sin_addr); 126 src = reinterpret_cast<const void*>(&raw.in.sin_addr);
127 } 127 }
128 if (inet_ntop(raw.ss_family, 128 if (inet_ntop(raw.ss.ss_family,
129 src, 129 src,
130 host, 130 host,
131 INET_ADDRSTRLEN) == NULL) { 131 INET_ADDRSTRLEN) == NULL) {
132 Log::PrintErr("Error inet_ntop: %s\n", strerror(errno)); 132 Log::PrintErr("Error inet_ntop: %s\n", strerror(errno));
133 return false; 133 return false;
134 } 134 }
135 *port = SocketAddress::GetAddrPort(&raw); 135 *port = SocketAddress::GetAddrPort(&raw);
136 return true; 136 return true;
137 } 137 }
138 138
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 freeaddrinfo(info); 188 freeaddrinfo(info);
189 return addresses; 189 return addresses;
190 } 190 }
191 191
192 192
193 intptr_t ServerSocket::CreateBindListen(RawAddr addr, 193 intptr_t ServerSocket::CreateBindListen(RawAddr addr,
194 intptr_t port, 194 intptr_t port,
195 intptr_t backlog) { 195 intptr_t backlog) {
196 intptr_t fd; 196 intptr_t fd;
197 197
198 fd = TEMP_FAILURE_RETRY(socket(addr.ss_family, SOCK_STREAM, 0)); 198 fd = TEMP_FAILURE_RETRY(socket(addr.ss.ss_family, SOCK_STREAM, 0));
199 if (fd < 0) return -1; 199 if (fd < 0) return -1;
200 200
201 FDUtils::SetCloseOnExec(fd); 201 FDUtils::SetCloseOnExec(fd);
202 202
203 int optval = 1; 203 int optval = 1;
204 TEMP_FAILURE_RETRY( 204 TEMP_FAILURE_RETRY(
205 setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval))); 205 setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)));
206 206
207 if (addr.ss_family == AF_INET6) { 207 if (addr.ss.ss_family == AF_INET6) {
208 optval = 0; 208 optval = 0;
209 TEMP_FAILURE_RETRY( 209 TEMP_FAILURE_RETRY(
210 setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &optval, sizeof(optval))); 210 setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &optval, sizeof(optval)));
211 } 211 }
212 212
213 SocketAddress::SetAddrPort(&addr, port); 213 SocketAddress::SetAddrPort(&addr, port);
214 if (TEMP_FAILURE_RETRY( 214 if (TEMP_FAILURE_RETRY(
215 bind(fd, 215 bind(fd,
216 &addr.addr, 216 &addr.addr,
217 SocketAddress::GetAddrLength(addr))) < 0) { 217 SocketAddress::GetAddrLength(addr))) < 0) {
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 bool Socket::SetNoDelay(intptr_t fd, bool enabled) { 284 bool Socket::SetNoDelay(intptr_t fd, bool enabled) {
285 int on = enabled ? 1 : 0; 285 int on = enabled ? 1 : 0;
286 return TEMP_FAILURE_RETRY(setsockopt(fd, 286 return TEMP_FAILURE_RETRY(setsockopt(fd,
287 SOL_TCP, 287 SOL_TCP,
288 TCP_NODELAY, 288 TCP_NODELAY,
289 reinterpret_cast<char *>(&on), 289 reinterpret_cast<char *>(&on),
290 sizeof(on))) == 0; 290 sizeof(on))) == 0;
291 } 291 }
292 292
293 #endif // defined(TARGET_OS_ANDROID) 293 #endif // defined(TARGET_OS_ANDROID)
OLDNEW
« no previous file with comments | « runtime/bin/socket.h ('k') | runtime/bin/socket_linux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698