@@ -38,6 +38,13 @@ __errno_location(void);
38
38
return -1; \
39
39
}
40
40
41
+ /* REVISIT: in many cases, EAI_SYSTEM may not be an ideal error code */
42
+ #define GAI_HANDLE_ERROR (error ) \
43
+ if (error != __WASI_ERRNO_SUCCESS) { \
44
+ errno = error; \
45
+ return EAI_SYSTEM; \
46
+ }
47
+
41
48
static void
42
49
ipv4_addr_to_wasi_ip4_addr (uint32_t addr_num , __wasi_addr_ip4_t * out )
43
50
{
@@ -518,7 +525,7 @@ getaddrinfo(const char *node, const char *service, const struct addrinfo *hints,
518
525
struct aibuf * aibuf_res ;
519
526
520
527
error = addrinfo_hints_to_wasi_hints (hints , & wasi_hints );
521
- HANDLE_ERROR (error )
528
+ GAI_HANDLE_ERROR (error )
522
529
523
530
do {
524
531
if (addr_info )
@@ -529,29 +536,29 @@ getaddrinfo(const char *node, const char *service, const struct addrinfo *hints,
529
536
* sizeof (__wasi_addr_info_t ));
530
537
531
538
if (!addr_info ) {
532
- HANDLE_ERROR ( __WASI_ERRNO_NOMEM )
539
+ return EAI_MEMORY ;
533
540
}
534
541
535
542
error = __wasi_sock_addr_resolve (node , service == NULL ? "" : service ,
536
543
& wasi_hints , addr_info , addr_info_size ,
537
544
& max_info_size );
538
545
if (error != __WASI_ERRNO_SUCCESS ) {
539
546
free (addr_info );
540
- HANDLE_ERROR (error );
547
+ GAI_HANDLE_ERROR (error );
541
548
}
542
549
} while (max_info_size > addr_info_size );
543
550
544
551
addr_info_size = max_info_size ;
545
552
if (addr_info_size == 0 ) {
546
553
free (addr_info );
547
- HANDLE_ERROR ( __WASI_ERRNO_NOENT )
554
+ return EAI_NONAME ;
548
555
}
549
556
550
557
aibuf_res =
551
558
(struct aibuf * )calloc (1 , addr_info_size * sizeof (struct aibuf ));
552
559
if (!aibuf_res ) {
553
560
free (addr_info );
554
- HANDLE_ERROR ( __WASI_ERRNO_NOMEM )
561
+ return EAI_MEMORY ;
555
562
}
556
563
557
564
* res = & aibuf_res [0 ].ai ;
@@ -564,14 +571,14 @@ getaddrinfo(const char *node, const char *service, const struct addrinfo *hints,
564
571
if (error != __WASI_ERRNO_SUCCESS ) {
565
572
free (addr_info );
566
573
free (aibuf_res );
567
- HANDLE_ERROR (error )
574
+ GAI_HANDLE_ERROR (error )
568
575
}
569
576
ai -> ai_next = i == addr_info_size - 1 ? NULL : & aibuf_res [i + 1 ].ai ;
570
577
}
571
578
572
579
free (addr_info );
573
580
574
- return __WASI_ERRNO_SUCCESS ;
581
+ return 0 ;
575
582
}
576
583
577
584
void
0 commit comments