Skip to content

Commit e93af31

Browse files
authored
Merge pull request #7269 from jepler/socketpool-gaierror
Add SocketPool.gaierror
2 parents d349c22 + aef55b7 commit e93af31

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

shared-bindings/socketpool/SocketPool.c

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
#include "shared-bindings/socketpool/Socket.h"
3737
#include "shared-bindings/socketpool/SocketPool.h"
3838

39+
#define SOCKETPOOL_EAI_NONAME (-2)
40+
3941
//| class SocketPool:
4042
//| """A pool of socket resources available for the given radio. Only one
4143
//| SocketPool can be created for each radio.
@@ -63,12 +65,20 @@ STATIC mp_obj_t socketpool_socketpool_make_new(const mp_obj_type_t *type, size_t
6365

6466
return MP_OBJ_FROM_PTR(s);
6567
}
68+
69+
//| class gaierror(OSError):
70+
//| """Errors raised by getaddrinfo"""
71+
//|
72+
MP_DEFINE_EXCEPTION(gaierror, OSError)
73+
74+
//|
6675
//| AF_INET: int
6776
//| AF_INET6: int
6877
//|
6978
//| SOCK_STREAM: int
7079
//| SOCK_DGRAM: int
7180
//| SOCK_RAW: int
81+
//| EAI_NONAME: int
7282
//|
7383
//| TCP_NODELAY: int
7484
//|
@@ -145,7 +155,11 @@ STATIC mp_obj_t socketpool_socketpool_getaddrinfo(size_t n_args, const mp_obj_t
145155
}
146156

147157
if (ip_str == mp_const_none) {
148-
mp_raise_OSError(-2); // socket.EAI_NONAME from CPython
158+
mp_obj_t exc_args[2] = {
159+
MP_OBJ_NEW_SMALL_INT(SOCKETPOOL_EAI_NONAME),
160+
MP_OBJ_NEW_QSTR(MP_QSTR_Name_space_or_space_service_space_not_space_known),
161+
};
162+
nlr_raise(mp_obj_new_exception_args(&mp_type_gaierror, 2, exc_args));
149163
}
150164

151165
mp_obj_tuple_t *tuple = MP_OBJ_TO_PTR(mp_obj_new_tuple(5, NULL));
@@ -164,6 +178,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(socketpool_socketpool_getaddrinfo_obj, 1, sock
164178
STATIC const mp_rom_map_elem_t socketpool_socketpool_locals_dict_table[] = {
165179
{ MP_ROM_QSTR(MP_QSTR_socket), MP_ROM_PTR(&socketpool_socketpool_socket_obj) },
166180
{ MP_ROM_QSTR(MP_QSTR_getaddrinfo), MP_ROM_PTR(&socketpool_socketpool_getaddrinfo_obj) },
181+
{ MP_ROM_QSTR(MP_QSTR_gaierror), MP_ROM_PTR(&mp_type_gaierror) },
167182

168183
// class constants
169184
{ MP_ROM_QSTR(MP_QSTR_AF_INET), MP_ROM_INT(SOCKETPOOL_AF_INET) },
@@ -176,6 +191,8 @@ STATIC const mp_rom_map_elem_t socketpool_socketpool_locals_dict_table[] = {
176191
{ MP_ROM_QSTR(MP_QSTR_TCP_NODELAY), MP_ROM_INT(SOCKETPOOL_TCP_NODELAY) },
177192

178193
{ MP_ROM_QSTR(MP_QSTR_IPPROTO_TCP), MP_ROM_INT(SOCKETPOOL_IPPROTO_TCP) },
194+
195+
{ MP_ROM_QSTR(MP_QSTR_EAI_NONAME), MP_ROM_INT(SOCKETPOOL_EAI_NONAME) },
179196
};
180197

181198
STATIC MP_DEFINE_CONST_DICT(socketpool_socketpool_locals_dict, socketpool_socketpool_locals_dict_table);

0 commit comments

Comments
 (0)