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