OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ipc/ipc_channel_posix.h" | 5 #include "ipc/ipc_channel_posix.h" |
6 | 6 |
7 #include <errno.h> | 7 #include <errno.h> |
8 #include <fcntl.h> | 8 #include <fcntl.h> |
9 #include <stddef.h> | 9 #include <stddef.h> |
10 #include <sys/types.h> | 10 #include <sys/types.h> |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 //------------------------------------------------------------------------------ | 137 //------------------------------------------------------------------------------ |
138 // Verify that kMaxPipeNameLength is a decent size. | 138 // Verify that kMaxPipeNameLength is a decent size. |
139 COMPILE_ASSERT(sizeof(((sockaddr_un*)0)->sun_path) >= kMaxPipeNameLength, | 139 COMPILE_ASSERT(sizeof(((sockaddr_un*)0)->sun_path) >= kMaxPipeNameLength, |
140 BAD_SUN_PATH_LENGTH); | 140 BAD_SUN_PATH_LENGTH); |
141 | 141 |
142 // Creates a unix domain socket bound to the specified name that is listening | 142 // Creates a unix domain socket bound to the specified name that is listening |
143 // for connections. | 143 // for connections. |
144 bool CreateServerUnixDomainSocket(const std::string& pipe_name, | 144 bool CreateServerUnixDomainSocket(const std::string& pipe_name, |
145 int* server_listen_fd) { | 145 int* server_listen_fd) { |
146 DCHECK(server_listen_fd); | 146 DCHECK(server_listen_fd); |
147 DCHECK_GT(pipe_name.length(), 0u); | |
148 DCHECK_LT(pipe_name.length(), kMaxPipeNameLength); | |
149 | 147 |
150 if (pipe_name.length() == 0 || pipe_name.length() >= kMaxPipeNameLength) { | 148 if (pipe_name.length() == 0 || pipe_name.length() >= kMaxPipeNameLength) { |
| 149 DLOG(ERROR) << "pipe_name.length() == " << pipe_name.length(); |
151 return false; | 150 return false; |
152 } | 151 } |
153 | 152 |
154 // Create socket. | 153 // Create socket. |
155 int fd = socket(AF_UNIX, SOCK_STREAM, 0); | 154 int fd = socket(AF_UNIX, SOCK_STREAM, 0); |
156 if (fd < 0) { | 155 if (fd < 0) { |
157 return false; | 156 return false; |
158 } | 157 } |
159 | 158 |
160 // Make socket non-blocking | 159 // Make socket non-blocking |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 remote_fd_pipe_(-1), | 307 remote_fd_pipe_(-1), |
309 #endif // IPC_USES_READWRITE | 308 #endif // IPC_USES_READWRITE |
310 pipe_name_(channel_handle.name), | 309 pipe_name_(channel_handle.name), |
311 listener_(listener), | 310 listener_(listener), |
312 must_unlink_(false) { | 311 must_unlink_(false) { |
313 memset(input_buf_, 0, sizeof(input_buf_)); | 312 memset(input_buf_, 0, sizeof(input_buf_)); |
314 memset(input_cmsg_buf_, 0, sizeof(input_cmsg_buf_)); | 313 memset(input_cmsg_buf_, 0, sizeof(input_cmsg_buf_)); |
315 if (!CreatePipe(channel_handle)) { | 314 if (!CreatePipe(channel_handle)) { |
316 // The pipe may have been closed already. | 315 // The pipe may have been closed already. |
317 const char *modestr = (mode_ & MODE_SERVER_FLAG) ? "server" : "client"; | 316 const char *modestr = (mode_ & MODE_SERVER_FLAG) ? "server" : "client"; |
318 // The pipe may have been closed already. | |
319 LOG(WARNING) << "Unable to create pipe named \"" << channel_handle.name | 317 LOG(WARNING) << "Unable to create pipe named \"" << channel_handle.name |
320 << "\" in " << modestr << " mode"; | 318 << "\" in " << modestr << " mode"; |
321 } | 319 } |
322 } | 320 } |
323 | 321 |
324 Channel::ChannelImpl::~ChannelImpl() { | 322 Channel::ChannelImpl::~ChannelImpl() { |
325 Close(); | 323 Close(); |
326 } | 324 } |
327 | 325 |
328 bool SocketPair(int* fd1, int* fd2) { | 326 bool SocketPair(int* fd1, int* fd2) { |
(...skipping 878 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1207 void Channel::ResetToAcceptingConnectionState() { | 1205 void Channel::ResetToAcceptingConnectionState() { |
1208 channel_impl_->ResetToAcceptingConnectionState(); | 1206 channel_impl_->ResetToAcceptingConnectionState(); |
1209 } | 1207 } |
1210 | 1208 |
1211 // static | 1209 // static |
1212 bool Channel::IsNamedServerInitialized(const std::string& channel_id) { | 1210 bool Channel::IsNamedServerInitialized(const std::string& channel_id) { |
1213 return ChannelImpl::IsNamedServerInitialized(channel_id); | 1211 return ChannelImpl::IsNamedServerInitialized(channel_id); |
1214 } | 1212 } |
1215 | 1213 |
1216 } // namespace IPC | 1214 } // namespace IPC |
OLD | NEW |