@@ -358,42 +358,14 @@ static int Client_inet_addr(Client *cli, const char *host, int port) {
358
358
cli->server_host = host;
359
359
cli->server_port = port;
360
360
361
- void *addr = nullptr ;
362
- if (cli->socket ->is_inet4 ()) {
363
- cli->server_addr .addr .inet_v4 .sin_family = AF_INET;
364
- cli->server_addr .addr .inet_v4 .sin_port = htons (port);
365
- cli->server_addr .len = sizeof (cli->server_addr .addr .inet_v4 );
366
- addr = &cli->server_addr .addr .inet_v4 .sin_addr .s_addr ;
367
-
368
- if (inet_pton (AF_INET, host, addr)) {
369
- return SW_OK;
370
- }
371
- } else if (cli->socket ->is_inet6 ()) {
372
- cli->server_addr .addr .inet_v6 .sin6_family = AF_INET6;
373
- cli->server_addr .addr .inet_v6 .sin6_port = htons (port);
374
- cli->server_addr .len = sizeof (cli->server_addr .addr .inet_v6 );
375
- addr = cli->server_addr .addr .inet_v6 .sin6_addr .s6_addr ;
376
-
377
- if (inet_pton (AF_INET6, host, addr)) {
378
- return SW_OK;
379
- }
380
- } else if (cli->socket ->is_local ()) {
381
- cli->server_addr .addr .un .sun_family = AF_UNIX;
382
- swoole_strlcpy (cli->server_addr .addr .un .sun_path , host, sizeof (cli->server_addr .addr .un .sun_path ));
383
- cli->server_addr .addr .un .sun_path [sizeof (cli->server_addr .addr .un .sun_path ) - 1 ] = 0 ;
384
- cli->server_addr .len = sizeof (cli->server_addr .addr .un .sun_path );
385
- return SW_OK;
386
- } else {
387
- return SW_ERR;
388
- }
389
- if (!cli->async ) {
390
- if (swoole::network::gethostbyname (cli->_sock_domain , host, (char *) addr) < 0 ) {
391
- swoole_set_last_error (SW_ERROR_DNSLOOKUP_RESOLVE_FAILED);
361
+ if (!cli->server_addr .assign (cli->socket ->socket_type , host, port, !cli->async )) {
362
+ if (swoole_get_last_error () == SW_ERROR_BAD_HOST_ADDR) {
363
+ cli->wait_dns = 1 ;
364
+ } else {
392
365
return SW_ERR;
393
366
}
394
- } else {
395
- cli->wait_dns = 1 ;
396
367
}
368
+
397
369
return SW_OK;
398
370
}
399
371
0 commit comments