| 121 | } |
| 122 | |
| 123 | int |
| 124 | socket_connect(auto_file& fd, const socket_args& args, std::string& err_r) |
| 125 | { |
| 126 | int r = 0; |
| 127 | if ((r = socket_open(fd, args, err_r)) != 0) { |
| 128 | return r; |
| 129 | } |
| 130 | if (connect(fd.get(), reinterpret_cast<const sockaddr *>(&args.addr), |
| 131 | args.addrlen) != 0) { |
| 132 | if (!args.nonblocking || errno != EINPROGRESS) { |
| 133 | return errno_string("connect", errno, err_r); |
| 134 | } |
| 135 | } |
| 136 | return 0; |
| 137 | } |
| 138 | |
| 139 | int |
| 140 | socket_bind(auto_file& fd, const socket_args& args, std::string& err_r) |