| 61 | } |
| 62 | |
| 63 | int |
| 64 | socket_args::resolve(const char *node, const char *service) |
| 65 | { |
| 66 | const int flags = (node == 0) ? AI_PASSIVE : 0; |
| 67 | auto_addrinfo ai; |
| 68 | addr = sockaddr_storage(); |
| 69 | addrlen = 0; |
| 70 | const int r = ai.resolve(node, service, flags, family, socktype, protocol); |
| 71 | if (r != 0) { |
| 72 | return r; |
| 73 | } |
| 74 | memcpy(&addr, ai.get()->ai_addr, ai.get()->ai_addrlen); |
| 75 | addrlen = ai.get()->ai_addrlen; |
| 76 | return 0; |
| 77 | } |
| 78 | |
| 79 | int |
| 80 | socket_set_options(auto_file& fd, const socket_args& args, std::string& err_r) |