Lines Matching +full:getsockopt +full:- +full:timeouts
9 - Only AF_INET, AF_INET6 and AF_UNIX address families are supported in a
12 - No read/write operations (use sendall/recv or makefile instead).
13 - Additional restrictions apply on some non-Unix platforms (compensated
18 - socket.error: exception raised for socket specific errors, alias for OSError
19 - socket.gaierror: exception raised for getaddrinfo/getnameinfo errors,
21 - socket.herror: exception raised for gethostby* errors,
23 - socket.gethostbyname(hostname) --> host IP address (string: 'dd.dd.dd.dd')
24 - socket.gethostbyaddr(IP address) --> (hostname, [alias, ...], [IP addr, ...])
25 - socket.gethostname() --> host name (string: 'spam' or 'spam.domain.com')
26 - socket.getprotobyname(protocolname) --> protocol number
27 - socket.getservbyname(servicename[, protocolname]) --> port number
28 - socket.getservbyport(portnumber[, protocolname]) --> service name
29 - socket.socket([family[, type [, proto, fileno]]]) --> new socket object
30 (fileno specifies a pre-existing socket file descriptor)
31 - socket.socketpair([family[, type [, proto]]]) --> (socket, socket)
32 - socket.ntohs(16 bit value) --> new int object
33 - socket.ntohl(32 bit value) --> new int object
34 - socket.htons(16 bit value) --> new int object
35 - socket.htonl(32 bit value) --> new int object
36 - socket.getaddrinfo(host, port [, family, type, proto, flags])
37 --> List of (family, type, proto, canonname, sockaddr)
38 - socket.getnameinfo(sockaddr, flags) --> (host, port)
39 - socket.AF_INET, socket.SOCK_STREAM, etc.: constants from <socket.h>
40 - socket.has_ipv6: boolean value indicating if IPv6 is supported
41 - socket.inet_aton(IP address) -> 32-bit packed IP representation
42 - socket.inet_ntoa(packed IP) -> IP address string
43 - socket.getdefaulttimeout() -> None | float
44 - socket.setdefaulttimeout(None | float)
45 - socket.if_nameindex() -> list of tuples (if_index, if_name)
46 - socket.if_nametoindex(name) -> corresponding interface index
47 - socket.if_indextoname(index) -> corresponding interface name
48 - an internet socket address is a pair (hostname, port)
51 - where a hostname is returned, the dd.dd.dd.dd notation is used
52 - a UNIX domain socket address is a string specifying the pathname
53 - an AF_PACKET socket address is a tuple containing a string
57 specify packet-type and ha-type/addr.
58 - an AF_QIPCRTR socket address is a (node, port) tuple where the
59 node and port are non-negative integers.
60 - an AF_TIPC socket address is expressed as
82 - names starting with sock_ are socket object methods
83 - names starting with socket_ are module-level functions
84 - names starting with PySocket are exported through socketmodule.h
112 "socket(family=AF_INET, type=SOCK_STREAM, proto=0) -> socket object\n\
113 socket(family=-1, type=-1, proto=-1, fileno=None) -> socket object\n\
120 The socket is created as non-inheritable.\n\
122 When a fileno is passed in, family, type and proto are auto-detected,\n\
129 _accept() -- accept connection, returning new socket fd and client address\n\
130 bind(addr) -- bind the socket to a local address\n\
131 close() -- close the socket\n\
132 connect(addr) -- connect the socket to a remote address\n\
133 connect_ex(addr) -- connect, return an error code instead of an exception\n\
134 dup() -- return a new socket fd duplicated from fileno()\n\
135 fileno() -- return underlying file descriptor\n\
136 getpeername() -- return remote address [*]\n\
137 getsockname() -- return local address\n\
138 getsockopt(level, optname[, buflen]) -- get socket options\n\
139 gettimeout() -- return timeout or None\n\
140 listen([n]) -- start listening for incoming connections\n\
141 recv(buflen[, flags]) -- receive data\n\
142 recv_into(buffer[, nbytes[, flags]]) -- receive data (into a buffer)\n\
143 recvfrom(buflen[, flags]) -- receive data and sender\'s address\n\
145 -- receive data and sender\'s address (into a buffer)\n\
146 sendall(data[, flags]) -- send all data\n\
147 send(data[, flags]) -- send data, may not send all of it\n\
148 sendto(data[, flags], addr) -- send data to a given address\n\
149 setblocking(bool) -- set or clear the blocking I/O flag\n\
150 getblocking() -- return True if socket is blocking, False if non-blocking\n\
151 setsockopt(level, optname, value[, optlen]) -- set socket options\n\
152 settimeout(None | float) -- set or clear the timeout\n\
153 shutdown(how) -- shut down traffic in one or both directions\n\
157 /* XXX This is a terrible mess of platform-dependent preprocessor hacks.
160 /* Hacks for gethostbyname_r(). On some non-Linux platforms, the configure
251 /* Non-MS WINDOWS includes */
306 /* remove some flags on older version Windows during run-time.
307 https://msdn.microsoft.com/en-us/library/windows/desktop/ms738596.aspx */
333 return -1; in remove_unusable_flags()
361 return -1; in remove_unusable_flags()
366 return -1; in remove_unusable_flags()
455 #define _BT_L2_MEMB(sa, memb) ((sa)->l2cap_##memb)
456 #define _BT_RC_MEMB(sa, memb) ((sa)->rfcomm_##memb)
457 #define _BT_HCI_MEMB(sa, memb) ((sa)->hci_##memb)
465 #define _BT_L2_MEMB(sa, memb) ((sa)->bt_##memb)
466 #define _BT_RC_MEMB(sa, memb) ((sa)->bt_##memb)
467 #define _BT_HCI_MEMB(sa, memb) ((sa)->bt_##memb)
468 #define _BT_SCO_MEMB(sa, memb) ((sa)->bt_##memb)
470 #define _BT_L2_MEMB(sa, memb) ((sa)->l2_##memb)
471 #define _BT_RC_MEMB(sa, memb) ((sa)->rc_##memb)
472 #define _BT_HCI_MEMB(sa, memb) ((sa)->hci_##memb)
473 #define _BT_SCO_MEMB(sa, memb) ((sa)->sco_##memb)
483 #define _BT_RC_MEMB(sa, memb) ((sa)->memb)
487 #define SAS2SA(x) (&((x)->sa))
500 #define INVALID_SOCKET (-1)
504 #define INADDR_NONE (-1)
529 (2**31)-1 and recommends against storing larger values, but
531 safe side we use the smaller of (2**31)-1 and INT_MAX. */
545 #define IS_SELECTABLE(s) (_PyIsSelectable_fd((s)->sock_fd) || (s)->sock_timeout <= 0)
586 static int support_wsa_no_inherit = -1;
656 int result = -1; in internal_setblocking()
669 if (ioctl(s->sock_fd, FIONBIO, (unsigned int *)&block) == -1) in internal_setblocking()
672 delay_flag = fcntl(s->sock_fd, F_GETFL, 0); in internal_setblocking()
673 if (delay_flag == -1) in internal_setblocking()
680 if (fcntl(s->sock_fd, F_SETFL, new_delay_flag) == -1) in internal_setblocking()
685 if (ioctlsocket(s->sock_fd, FIONBIO, &arg) != 0) in internal_setblocking()
725 if (s->sock_fd == INVALID_SOCKET) in internal_select()
731 pollfd.fd = s->sock_fd; in internal_select()
741 /* s->sock_timeout is in seconds, timeout in ms */ in internal_select()
745 /* On some OSes, typically BSD-based ones, the timeout parameter of the in internal_select()
747 or -1. See issue 37811. */ in internal_select()
752 ms = -1; in internal_select()
768 FD_SET(s->sock_fd, &fds); in internal_select()
775 FD_SET(s->sock_fd, &efds); in internal_select()
781 n = select(Py_SAFE_DOWNCAST(s->sock_fd+1, SOCKET_T, int), in internal_select()
784 n = select(Py_SAFE_DOWNCAST(s->sock_fd+1, SOCKET_T, int), in internal_select()
790 return -1; in internal_select()
798 On error, raise an exception and return -1 if err is set, or fill err and
799 return -1 otherwise. If a signal was received and the signal handler raised
800 an exception, return -1, and set err to -1 if err is set.
843 interval = deadline - _PyTime_GetMonotonicClock(); in sock_call_ex()
860 if (res == -1) { in sock_call_ex()
868 *err = -1; in sock_call_ex()
869 return -1; in sock_call_ex()
877 s->errorhandler(); in sock_call_ex()
878 return -1; in sock_call_ex()
886 return -1; in sock_call_ex()
915 *err = -1; in sock_call_ex()
916 return -1; in sock_call_ex()
922 if (s->sock_timeout > 0 in sock_call_ex()
936 s->errorhandler(); in sock_call_ex()
938 return -1; in sock_call_ex()
948 return sock_call_ex(s, writing, func, data, 0, NULL, s->sock_timeout); in sock_call()
955 static _PyTime_t defaulttimeout = _PYTIME_FROMSECONDS(-1);
961 s->sock_fd = fd; in init_sockobject()
962 s->sock_family = family; in init_sockobject()
964 s->sock_type = type; in init_sockobject()
973 s->sock_type = s->sock_type & ~SOCK_NONBLOCK; in init_sockobject()
976 s->sock_type = s->sock_type & ~SOCK_CLOEXEC; in init_sockobject()
979 s->sock_proto = proto; in init_sockobject()
981 s->errorhandler = &set_error; in init_sockobject()
984 s->sock_timeout = 0; in init_sockobject()
988 s->sock_timeout = defaulttimeout; in init_sockobject()
990 if (internal_setblocking(s, 0) == -1) { in init_sockobject()
991 return -1; in init_sockobject()
1012 if (init_sockobject(s, fd, family, type, proto) == -1) { in new_sockobject()
1049 /* We assume that those thread-unsafe getaddrinfo() versions in setipaddr()
1055 return -1; in setipaddr()
1057 switch (res->ai_family) { in setipaddr()
1070 return -1; in setipaddr()
1072 if (res->ai_next) { in setipaddr()
1076 return -1; in setipaddr()
1078 if (res->ai_addrlen < addr_ret_size) in setipaddr()
1079 addr_ret_size = res->ai_addrlen; in setipaddr()
1080 memcpy(addr_ret, res->ai_addr, addr_ret_size); in setipaddr()
1084 /* special-case broadcast - inet_addr() below can return INADDR_NONE for in setipaddr()
1092 return -1; in setipaddr()
1096 sin->sin_family = AF_INET; in setipaddr()
1098 sin->sin_len = sizeof(*sin); in setipaddr()
1100 sin->sin_addr.s_addr = INADDR_BROADCAST; in setipaddr()
1101 return sizeof(sin->sin_addr); in setipaddr()
1110 if (inet_pton(AF_INET, name, &sin->sin_addr) > 0) { in setipaddr()
1111 sin->sin_family = AF_INET; in setipaddr()
1113 sin->sin_len = sizeof(*sin); in setipaddr()
1119 /* check for an IPv6 address - if the address contains a scope ID, we in setipaddr()
1125 if (inet_pton(AF_INET6, name, &sin->sin6_addr) > 0) { in setipaddr()
1126 sin->sin6_family = AF_INET6; in setipaddr()
1128 sin->sin6_len = sizeof(*sin); in setipaddr()
1139 if ((sin->sin_addr.s_addr = inet_addr(name)) != INADDR_NONE) { in setipaddr()
1140 sin->sin_family = AF_INET; in setipaddr()
1142 sin->sin_len = sizeof(*sin); in setipaddr()
1156 /* On Tru64 V5.1, numeric-to-addr conversion fails in setipaddr()
1165 return -1; in setipaddr()
1167 if (res->ai_addrlen < addr_ret_size) in setipaddr()
1168 addr_ret_size = res->ai_addrlen; in setipaddr()
1169 memcpy((char *) addr_ret, res->ai_addr, addr_ret_size); in setipaddr()
1171 switch (addr_ret->sa_family) { in setipaddr()
1180 return -1; in setipaddr()
1191 if (inet_ntop(AF_INET, &addr->sin_addr, buf, sizeof(buf)) == NULL) { in make_ipv4_addr()
1205 if (inet_ntop(AF_INET6, &addr->sin6_addr, buf, sizeof(buf)) == NULL) { in make_ipv6_addr()
1215 address. Returns the length (6), or raises an exception and returns -1 if
1237 bdaddr->b[0] = b0; in setbdaddr()
1238 bdaddr->b[1] = b1; in setbdaddr()
1239 bdaddr->b[2] = b2; in setbdaddr()
1240 bdaddr->b[3] = b3; in setbdaddr()
1241 bdaddr->b[4] = b4; in setbdaddr()
1242 bdaddr->b[5] = b5; in setbdaddr()
1248 return -1; in setbdaddr()
1274 bdaddr->b[5], bdaddr->b[4], bdaddr->b[3], in makebdaddr()
1275 bdaddr->b[2], bdaddr->b[1], bdaddr->b[0]); in makebdaddr()
1293 /* No address -- may be recvfrom() from known socket */ in makesockaddr()
1297 switch (addr->sa_family) { in makesockaddr()
1305 ret = Py_BuildValue("Oi", addrobj, ntohs(a->sin_port)); in makesockaddr()
1316 size_t linuxaddrlen = addrlen - offsetof(struct sockaddr_un, sun_path); in makesockaddr()
1317 if (linuxaddrlen > 0 && a->sun_path[0] == 0) { /* Linux abstract namespace */ in makesockaddr()
1318 return PyBytes_FromStringAndSize(a->sun_path, linuxaddrlen); in makesockaddr()
1323 /* regular NULL-terminated string */ in makesockaddr()
1324 return PyUnicode_DecodeFSDefault(a->sun_path); in makesockaddr()
1333 return Py_BuildValue("II", a->nl_pid, a->nl_groups); in makesockaddr()
1341 return Py_BuildValue("II", a->sq_node, a->sq_port); in makesockaddr()
1349 return Py_BuildValue("II", a->svm_cid, a->svm_port); in makesockaddr()
1362 ntohs(a->sin6_port), in makesockaddr()
1363 ntohl(a->sin6_flowinfo), in makesockaddr()
1364 a->sin6_scope_id); in makesockaddr()
1442 if (a->sll_ifindex) { in makesockaddr()
1443 ifr.ifr_ifindex = a->sll_ifindex; in makesockaddr()
1449 ntohs(a->sll_protocol), in makesockaddr()
1450 a->sll_pkttype, in makesockaddr()
1451 a->sll_hatype, in makesockaddr()
1452 a->sll_addr, in makesockaddr()
1453 (Py_ssize_t)a->sll_halen); in makesockaddr()
1461 if (a->addrtype == TIPC_ADDR_NAMESEQ) { in makesockaddr()
1463 a->addrtype, in makesockaddr()
1464 a->addr.nameseq.type, in makesockaddr()
1465 a->addr.nameseq.lower, in makesockaddr()
1466 a->addr.nameseq.upper, in makesockaddr()
1467 a->scope); in makesockaddr()
1468 } else if (a->addrtype == TIPC_ADDR_NAME) { in makesockaddr()
1470 a->addrtype, in makesockaddr()
1471 a->addr.name.name.type, in makesockaddr()
1472 a->addr.name.name.instance, in makesockaddr()
1473 a->addr.name.name.instance, in makesockaddr()
1474 a->scope); in makesockaddr()
1475 } else if (a->addrtype == TIPC_ADDR_ID) { in makesockaddr()
1477 a->addrtype, in makesockaddr()
1478 a->addr.id.node, in makesockaddr()
1479 a->addr.id.ref, in makesockaddr()
1481 a->scope); in makesockaddr()
1497 if (a->can_ifindex) { in makesockaddr()
1498 ifr.ifr_ifindex = a->can_ifindex; in makesockaddr()
1509 a->can_addr.tp.rx_id, in makesockaddr()
1510 a->can_addr.tp.tx_id); in makesockaddr()
1518 (unsigned long long)a->can_addr.j1939.name, in makesockaddr()
1519 (unsigned int)a->can_addr.j1939.pgn, in makesockaddr()
1520 a->can_addr.j1939.addr); in makesockaddr()
1539 return Py_BuildValue("(II)", a->sc_id, a->sc_unit); in makesockaddr()
1554 a->salg_type, in makesockaddr()
1555 strnlen((const char*)a->salg_type, in makesockaddr()
1556 sizeof(a->salg_type)), in makesockaddr()
1557 a->salg_name, in makesockaddr()
1558 strnlen((const char*)a->salg_name, in makesockaddr()
1559 sizeof(a->salg_name)), in makesockaddr()
1560 a->salg_feat, in makesockaddr()
1561 a->salg_mask); in makesockaddr()
1569 exception -- return it as an (int, bytes) tuple. */ in makesockaddr()
1571 addr->sa_family, in makesockaddr()
1572 addr->sa_data, in makesockaddr()
1573 sizeof(addr->sa_data)); in makesockaddr()
1578 /* Helper for getsockaddrarg: bypass IDNA for ASCII-only host names
1588 Py_CLEAR(data->obj); in idna_cleanup()
1600 data->obj = NULL; in idna_converter()
1601 len = -1; in idna_converter()
1603 data->buf = PyBytes_AsString(obj); in idna_converter()
1607 data->buf = PyByteArray_AsString(obj); in idna_converter()
1611 if (PyUnicode_READY(obj) == -1) { in idna_converter()
1615 data->buf = PyUnicode_DATA(obj); in idna_converter()
1625 data->obj = obj2; in idna_converter()
1626 data->buf = PyBytes_AS_STRING(obj2); in idna_converter()
1632 Py_TYPE(obj)->tp_name); in idna_converter()
1635 if (strlen(data->buf) != len) { in idna_converter()
1636 Py_CLEAR(data->obj); in idna_converter()
1652 switch (s->sock_family) { in getsockaddrarg()
1674 struct sockaddr_un* addr = &addrbuf->un; in getsockaddrarg()
1678 if ((size_t)path.len > sizeof addr->sun_path) { in getsockaddrarg()
1687 /* regular NULL-terminated string */ in getsockaddrarg()
1688 if ((size_t)path.len >= sizeof addr->sun_path) { in getsockaddrarg()
1693 addr->sun_path[path.len] = 0; in getsockaddrarg()
1695 addr->sun_family = s->sock_family; in getsockaddrarg()
1696 memcpy(addr->sun_path, path.buf, path.len); in getsockaddrarg()
1710 struct sockaddr_nl* addr = &addrbuf->nl; in getsockaddrarg()
1715 caller, Py_TYPE(args)->tp_name); in getsockaddrarg()
1725 addr->nl_family = AF_NETLINK; in getsockaddrarg()
1726 addr->nl_pid = pid; in getsockaddrarg()
1727 addr->nl_groups = groups; in getsockaddrarg()
1737 struct sockaddr_qrtr* addr = &addrbuf->sq; in getsockaddrarg()
1743 Py_TYPE(args)->tp_name); in getsockaddrarg()
1748 addr->sq_family = AF_QIPCRTR; in getsockaddrarg()
1749 addr->sq_node = node; in getsockaddrarg()
1750 addr->sq_port = port; in getsockaddrarg()
1759 struct sockaddr_vm* addr = &addrbuf->vm; in getsockaddrarg()
1767 Py_TYPE(args)->tp_name); in getsockaddrarg()
1772 addr->svm_family = s->sock_family; in getsockaddrarg()
1773 addr->svm_port = port; in getsockaddrarg()
1774 addr->svm_cid = cid; in getsockaddrarg()
1783 /* RDS sockets use sockaddr_in: fall-through */ in getsockaddrarg()
1794 caller, Py_TYPE(args)->tp_name); in getsockaddrarg()
1805 "%s(): port must be 0-65535.", caller); in getsockaddrarg()
1809 struct sockaddr_in* addr = &addrbuf->in; in getsockaddrarg()
1818 "%s(): port must be 0-65535.", caller); in getsockaddrarg()
1821 addr->sin_family = AF_INET; in getsockaddrarg()
1822 addr->sin_port = htons((short)port); in getsockaddrarg()
1838 caller, Py_TYPE(args)->tp_name); in getsockaddrarg()
1850 "%s(): port must be 0-65535.", caller); in getsockaddrarg()
1854 struct sockaddr_in6* addr = &addrbuf->in6; in getsockaddrarg()
1863 "%s(): port must be 0-65535.", caller); in getsockaddrarg()
1869 "%s(): flowinfo must be 0-1048575.", caller); in getsockaddrarg()
1872 addr->sin6_family = s->sock_family; in getsockaddrarg()
1873 addr->sin6_port = htons((short)port); in getsockaddrarg()
1874 addr->sin6_flowinfo = htonl(flowinfo); in getsockaddrarg()
1875 addr->sin6_scope_id = scope_id; in getsockaddrarg()
1884 switch (s->sock_proto) { in getsockaddrarg()
1890 struct sockaddr_l2 *addr = &addrbuf->bt_l2; in getsockaddrarg()
1909 struct sockaddr_rc *addr = &addrbuf->bt_rc; in getsockaddrarg()
1926 struct sockaddr_hci *addr = &addrbuf->bt_hci; in getsockaddrarg()
1954 struct sockaddr_sco *addr = &addrbuf->bt_sco; in getsockaddrarg()
1992 caller, Py_TYPE(args)->tp_name); in getsockaddrarg()
1997 of bpo-25041. */ in getsockaddrarg()
2012 ifr.ifr_name[(sizeof(ifr.ifr_name))-1] = '\0'; in getsockaddrarg()
2013 if (ioctl(s->sock_fd, SIOCGIFINDEX, &ifr) < 0) { in getsockaddrarg()
2014 s->errorhandler(); in getsockaddrarg()
2027 "%s(): proto must be 0-65535.", caller); in getsockaddrarg()
2031 struct sockaddr_ll* addr = &addrbuf->ll; in getsockaddrarg()
2032 addr->sll_family = AF_PACKET; in getsockaddrarg()
2033 addr->sll_protocol = htons((short)protoNumber); in getsockaddrarg()
2034 addr->sll_ifindex = ifr.ifr_ifindex; in getsockaddrarg()
2035 addr->sll_pkttype = pkttype; in getsockaddrarg()
2036 addr->sll_hatype = hatype; in getsockaddrarg()
2038 memcpy(&addr->sll_addr, haddr.buf, haddr.len); in getsockaddrarg()
2039 addr->sll_halen = haddr.len; in getsockaddrarg()
2042 addr->sll_halen = 0; in getsockaddrarg()
2059 caller, Py_TYPE(args)->tp_name); in getsockaddrarg()
2071 struct sockaddr_tipc *addr = &addrbuf->tipc; in getsockaddrarg()
2074 addr->family = AF_TIPC; in getsockaddrarg()
2075 addr->scope = scope; in getsockaddrarg()
2076 addr->addrtype = atype; in getsockaddrarg()
2079 addr->addr.nameseq.type = v1; in getsockaddrarg()
2080 addr->addr.nameseq.lower = v2; in getsockaddrarg()
2081 addr->addr.nameseq.upper = v3; in getsockaddrarg()
2083 addr->addr.name.name.type = v1; in getsockaddrarg()
2084 addr->addr.name.name.instance = v2; in getsockaddrarg()
2086 addr->addr.id.node = v1; in getsockaddrarg()
2087 addr->addr.id.ref = v2; in getsockaddrarg()
2102 switch (s->sock_proto) { in getsockaddrarg()
2105 /* fall-through */ in getsockaddrarg()
2115 struct sockaddr_can *addr = &addrbuf->can; in getsockaddrarg()
2120 caller, Py_TYPE(args)->tp_name); in getsockaddrarg()
2137 ifr.ifr_name[(sizeof(ifr.ifr_name))-1] = '\0'; in getsockaddrarg()
2138 if (ioctl(s->sock_fd, SIOCGIFINDEX, &ifr) < 0) { in getsockaddrarg()
2139 s->errorhandler(); in getsockaddrarg()
2150 addr->can_family = AF_CAN; in getsockaddrarg()
2151 addr->can_ifindex = ifr.ifr_ifindex; in getsockaddrarg()
2167 struct sockaddr_can *addr = &addrbuf->can; in getsockaddrarg()
2181 ifr.ifr_name[(sizeof(ifr.ifr_name))-1] = '\0'; in getsockaddrarg()
2182 if (ioctl(s->sock_fd, SIOCGIFINDEX, &ifr) < 0) { in getsockaddrarg()
2183 s->errorhandler(); in getsockaddrarg()
2194 addr->can_family = AF_CAN; in getsockaddrarg()
2195 addr->can_ifindex = ifr.ifr_ifindex; in getsockaddrarg()
2196 addr->can_addr.tp.rx_id = rx_id; in getsockaddrarg()
2197 addr->can_addr.tp.tx_id = tx_id; in getsockaddrarg()
2214 struct sockaddr_can *addr = &addrbuf->can; in getsockaddrarg()
2229 ifr.ifr_name[(sizeof(ifr.ifr_name))-1] = '\0'; in getsockaddrarg()
2230 if (ioctl(s->sock_fd, SIOCGIFINDEX, &ifr) < 0) { in getsockaddrarg()
2231 s->errorhandler(); in getsockaddrarg()
2242 addr->can_family = AF_CAN; in getsockaddrarg()
2243 addr->can_ifindex = ifr.ifr_ifindex; in getsockaddrarg()
2244 addr->can_addr.j1939.name = (uint64_t)j1939_name; in getsockaddrarg()
2245 addr->can_addr.j1939.pgn = (uint32_t)j1939_pgn; in getsockaddrarg()
2246 addr->can_addr.j1939.addr = j1939_addr; in getsockaddrarg()
2262 switch (s->sock_proto) { in getsockaddrarg()
2266 struct sockaddr_ctl *addr = &addrbuf->ctl; in getsockaddrarg()
2267 addr->sc_family = AF_SYSTEM; in getsockaddrarg()
2268 addr->ss_sysaddr = AF_SYS_CONTROL; in getsockaddrarg()
2289 if (ioctl(s->sock_fd, CTLIOCGINFO, &info)) { in getsockaddrarg()
2295 addr->sc_id = info.ctl_id; in getsockaddrarg()
2296 addr->sc_unit = 0; in getsockaddrarg()
2298 &(addr->sc_id), &(addr->sc_unit))) { in getsockaddrarg()
2320 struct sockaddr_alg *sa = &addrbuf->alg; in getsockaddrarg()
2323 sa->salg_family = AF_ALG; in getsockaddrarg()
2328 caller, Py_TYPE(args)->tp_name); in getsockaddrarg()
2334 &type, &name, &sa->salg_feat, &sa->salg_mask)) in getsockaddrarg()
2338 /* sockaddr_alg has fixed-sized char arrays for type, and name in getsockaddrarg()
2341 if (strlen(type) >= sizeof(sa->salg_type)) { in getsockaddrarg()
2345 strncpy((char *)sa->salg_type, type, sizeof(sa->salg_type)); in getsockaddrarg()
2346 if (strlen(name) >= sizeof(sa->salg_name)) { in getsockaddrarg()
2350 strncpy((char *)sa->salg_name, name, sizeof(sa->salg_name)); in getsockaddrarg()
2374 switch (s->sock_family) { in getsockaddrlen()
2410 /* RDS sockets use sockaddr_in: fall-through */ in getsockaddrlen()
2430 switch(s->sock_proto) in getsockaddrlen()
2486 switch(s->sock_proto) { in getsockaddrlen()
2532 if (length > (SOCKLEN_T_LIMIT - CMSG_LEN(0))) in get_CMSG_LEN()
2551 if (length > (SOCKLEN_T_LIMIT - CMSG_SPACE(1))) in get_CMSG_SPACE()
2561 /* Return true iff msg->msg_controllen is valid, cmsgh is a valid
2562 pointer in msg->msg_control with at least "space" bytes after it,
2569 sizeof(cmsgh->cmsg_len)); in cmsg_min_space()
2572 if (cmsgh == NULL || msg->msg_control == NULL) in cmsg_min_space()
2581 #pragma clang diagnostic ignored "-Wtautological-compare" in cmsg_min_space()
2585 #pragma GCC diagnostic ignored "-Wtype-limits" in cmsg_min_space()
2587 if (msg->msg_controllen < 0) in cmsg_min_space()
2597 cmsg_offset = (char *)cmsgh - (char *)msg->msg_control; in cmsg_min_space()
2598 return (cmsg_offset <= (size_t)-1 - space && in cmsg_min_space()
2599 cmsg_offset + space <= msg->msg_controllen); in cmsg_min_space()
2602 /* If pointer CMSG_DATA(cmsgh) is in buffer msg->msg_control, set
2604 true; otherwise, return false. Assumes cmsgh, msg->msg_control and
2605 msg->msg_controllen are valid. */
2614 data_offset = data_ptr - (char *)msg->msg_control; in get_cmsg_data_space()
2615 if (data_offset > msg->msg_controllen) in get_cmsg_data_space()
2617 *space = msg->msg_controllen - data_offset; in get_cmsg_data_space()
2622 msg->msg_control, return -1. If cmsgh is valid and its associated
2634 cmsgh->cmsg_len < CMSG_LEN(0)) in get_cmsg_data_len()
2635 return -1; in get_cmsg_data_len()
2636 cmsg_data_len = cmsgh->cmsg_len - CMSG_LEN(0); in get_cmsg_data_len()
2638 return -1; in get_cmsg_data_len()
2657 static int accept4_works = -1;
2664 struct sockaddr *addr = SAS2SA(ctx->addrbuf); in sock_accept_impl()
2665 socklen_t *paddrlen = ctx->addrlen; in sock_accept_impl()
2669 if (s->sock_family == AF_ALG) { in sock_accept_impl()
2672 *ctx->addrlen = 0; in sock_accept_impl()
2678 ctx->result = accept4(s->sock_fd, addr, paddrlen, in sock_accept_impl()
2680 if (ctx->result == INVALID_SOCKET && accept4_works == -1) { in sock_accept_impl()
2686 ctx->result = accept(s->sock_fd, addr, paddrlen); in sock_accept_impl()
2688 ctx->result = accept(s->sock_fd, addr, paddrlen); in sock_accept_impl()
2692 return (ctx->result != INVALID_SOCKET); in sock_accept_impl()
2694 return (ctx->result >= 0); in sock_accept_impl()
2698 /* s._accept() -> (fd, address) */
2749 addr = makesockaddr(s->sock_fd, SAS2SA(&addrbuf), in sock_accept()
2750 addrlen, s->sock_proto); in sock_accept()
2763 "_accept() -> (integer, address info)\n\
2770 False -- non-blocking mode; same as settimeout(0)
2771 True -- blocking mode; same as settimeout(None)
2780 if (block == -1 && PyErr_Occurred()) in sock_setblocking()
2783 s->sock_timeout = _PyTime_FromSeconds(block ? -1 : 0); in sock_setblocking()
2784 if (internal_setblocking(s, block) == -1) { in sock_setblocking()
2793 Set the socket to blocking (flag is true) or non-blocking (false).\n\
2799 False if it is in non-blocking mode.
2804 if (s->sock_timeout) { in sock_getblocking()
2816 is in non-blocking mode.");
2830 *timeout = _PyTime_FromSeconds(-1); in socket_parse_timeout()
2836 return -1; in socket_parse_timeout()
2840 return -1; in socket_parse_timeout()
2853 return -1; in socket_parse_timeout()
2860 None -- no timeout, blocking mode; same as setblocking(True)
2861 0.0 -- non-blocking mode; same as setblocking(False)
2862 > 0 -- timeout mode; operations time out after timeout seconds
2863 < 0 -- illegal; raises an exception
2873 s->sock_timeout = timeout; in sock_settimeout()
2881 number, the FD is in a non-blocking mode, and socket ops are in sock_settimeout()
2884 When timeout is 0.0, the FD is in a non-blocking mode. in sock_settimeout()
2893 ``0.0`` ``False`` non-blocking in sock_settimeout()
2894 ``> 0`` ``True`` non-blocking in sock_settimeout()
2897 if (internal_setblocking(s, block) == -1) { in sock_settimeout()
2916 if (s->sock_timeout < 0) { in sock_gettimeout()
2920 double seconds = _PyTime_AsSecondsDouble(s->sock_timeout); in sock_gettimeout()
2926 "gettimeout() -> timeout\n\
2929 operations. A timeout of None indicates that timeouts on socket\n\
2937 use optional built-in module 'struct' to encode the string.
2952 if (s->sock_family == AF_VSOCK) { in sock_setsockopt()
2958 res = setsockopt(s->sock_fd, level, optname, in sock_setsockopt()
2969 res = setsockopt(s->sock_fd, level, optname, in sock_setsockopt()
2979 res = setsockopt(s->sock_fd, level, optname, in sock_setsockopt()
2998 res = setsockopt(s->sock_fd, level, optname, in sock_setsockopt()
3001 res = setsockopt(s->sock_fd, level, optname, optval.buf, optval.len); in sock_setsockopt()
3007 return s->errorhandler(); in sock_setsockopt()
3023 /* s.getsockopt() method.
3026 use optional built-in module 'struct' to decode the string. */
3039 if (!PyArg_ParseTuple(args, "ii|i:getsockopt", in sock_getsockopt()
3045 if (s->sock_family == AF_VSOCK) { in sock_getsockopt()
3048 res = getsockopt(s->sock_fd, level, optname, in sock_getsockopt()
3051 return s->errorhandler(); in sock_getsockopt()
3056 res = getsockopt(s->sock_fd, level, optname, in sock_getsockopt()
3059 return s->errorhandler(); in sock_getsockopt()
3063 if (s->sock_family == AF_VSOCK) { in sock_getsockopt()
3065 "getsockopt string buffer not allowed"); in sock_getsockopt()
3071 "getsockopt buflen out of range"); in sock_getsockopt()
3077 res = getsockopt(s->sock_fd, level, optname, in sock_getsockopt()
3081 return s->errorhandler(); in sock_getsockopt()
3088 "getsockopt(level, option[, buffersize]) -> value\n\
3113 res = bind(s->sock_fd, SAS2SA(&addrbuf), addrlen); in sock_bind()
3116 return s->errorhandler(); in sock_bind()
3129 Set the file descriptor to -1 so operations tried subsequently
3138 fd = s->sock_fd; in sock_close()
3140 s->sock_fd = INVALID_SOCKET; in sock_close()
3144 http://linux.derkeiler.com/Mailing-Lists/Kernel/2005-09/3000.html in sock_close()
3149 /* bpo-30319: The peer can already have closed the connection. in sock_close()
3152 return s->errorhandler(); in sock_close()
3166 SOCKET_T fd = s->sock_fd; in sock_detach()
3167 s->sock_fd = INVALID_SOCKET; in sock_detach()
3184 if (getsockopt(s->sock_fd, SOL_SOCKET, SO_ERROR, (void *)&err, &size)) { in sock_connect_impl()
3185 /* getsockopt() failed */ in sock_connect_impl()
3206 res = connect(s->sock_fd, addr, addrlen); in internal_connect()
3220 return -1; in internal_connect()
3227 get the connection status using getsockopt(SO_ERROR). in internal_connect()
3229 If the socket is non-blocking, raise InterruptedError. The caller is in internal_connect()
3232 wait_connect = (s->sock_timeout != 0 && IS_SELECTABLE(s)); in internal_connect()
3235 wait_connect = (s->sock_timeout > 0 && err == SOCK_INPROGRESS_ERR in internal_connect()
3243 s->errorhandler(); in internal_connect()
3244 return -1; in internal_connect()
3253 1, NULL, s->sock_timeout) < 0) in internal_connect()
3254 return -1; in internal_connect()
3259 1, &err, s->sock_timeout) < 0) in internal_connect()
3321 "connect_ex(address) -> errno\n\
3332 return PyLong_FromSocket_t(s->sock_fd); in sock_fileno()
3336 "fileno() -> integer\n\
3354 res = getsockname(s->sock_fd, SAS2SA(&addrbuf), &addrlen); in sock_getsockname()
3357 return s->errorhandler(); in sock_getsockname()
3358 return makesockaddr(s->sock_fd, SAS2SA(&addrbuf), addrlen, in sock_getsockname()
3359 s->sock_proto); in sock_getsockname()
3363 "getsockname() -> address info\n\
3370 #ifdef HAVE_GETPEERNAME /* Cray APP doesn't have this :-( */
3384 res = getpeername(s->sock_fd, SAS2SA(&addrbuf), &addrlen); in sock_getpeername()
3387 return s->errorhandler(); in sock_getpeername()
3388 return makesockaddr(s->sock_fd, SAS2SA(&addrbuf), addrlen, in sock_getpeername()
3389 s->sock_proto); in sock_getpeername()
3393 "getpeername() -> address info\n\
3419 res = listen(s->sock_fd, backlog); in sock_listen()
3422 return s->errorhandler(); in sock_listen()
3447 if (ctx->len > INT_MAX) in sock_recv_impl()
3448 ctx->len = INT_MAX; in sock_recv_impl()
3449 ctx->result = recv(s->sock_fd, ctx->cbuf, (int)ctx->len, ctx->flags); in sock_recv_impl()
3451 ctx->result = recv(s->sock_fd, ctx->cbuf, ctx->len, ctx->flags); in sock_recv_impl()
3453 return (ctx->result >= 0); in sock_recv_impl()
3461 * successfully read. If there was an error, it returns -1. Note that it is
3473 return -1; in sock_recv_guts()
3484 return -1; in sock_recv_guts()
3531 "recv(buffersize[, flags]) -> data\n\
3592 "recv_into(buffer, [nbytes[, flags]]) -> nbytes_read\n\
3614 memset(ctx->addrbuf, 0, *ctx->addrlen); in sock_recvfrom_impl()
3617 if (ctx->len > INT_MAX) in sock_recvfrom_impl()
3618 ctx->len = INT_MAX; in sock_recvfrom_impl()
3619 ctx->result = recvfrom(s->sock_fd, ctx->cbuf, (int)ctx->len, ctx->flags, in sock_recvfrom_impl()
3620 SAS2SA(ctx->addrbuf), ctx->addrlen); in sock_recvfrom_impl()
3622 ctx->result = recvfrom(s->sock_fd, ctx->cbuf, ctx->len, ctx->flags, in sock_recvfrom_impl()
3623 SAS2SA(ctx->addrbuf), ctx->addrlen); in sock_recvfrom_impl()
3625 return (ctx->result >= 0); in sock_recvfrom_impl()
3633 * of bytes successfully read. If there was an error, it returns -1. Note
3651 return -1; in sock_recvfrom_guts()
3655 return -1; in sock_recvfrom_guts()
3664 return -1; in sock_recvfrom_guts()
3666 *addr = makesockaddr(s->sock_fd, SAS2SA(&addrbuf), addrlen, in sock_recvfrom_guts()
3667 s->sock_proto); in sock_recvfrom_guts()
3669 return -1; in sock_recvfrom_guts()
3721 "recvfrom(buffersize[, flags]) -> (data, address info)\n\
3778 "recvfrom_into(buffer[, nbytes[, flags]]) -> (nbytes, address info)\n\
3796 ctx->result = recvmsg(s->sock_fd, ctx->msg, ctx->flags); in sock_recvmsg_impl()
3797 return (ctx->result >= 0); in sock_recvmsg_impl()
3834 SAS2SA(&addrbuf)->sa_family = AF_UNSPEC; in sock_recvmsg_guts()
3875 "received malformed or improperly-truncated " in sock_recvmsg_guts()
3876 "ancillary data", 1) == -1) in sock_recvmsg_guts()
3888 tuple = Py_BuildValue("iiN", (int)cmsgh->cmsg_level, in sock_recvmsg_guts()
3889 (int)cmsgh->cmsg_type, bytes); in sock_recvmsg_guts()
3905 makesockaddr(s->sock_fd, SAS2SA(&addrbuf), in sock_recvmsg_guts()
3908 s->sock_proto)); in sock_recvmsg_guts()
3925 if (cmsgh->cmsg_level == SOL_SOCKET && in sock_recvmsg_guts()
3926 cmsgh->cmsg_type == SCM_RIGHTS) { in sock_recvmsg_guts()
3932 while (numfds-- > 0) in sock_recvmsg_guts()
3986 "recvmsg(bufsize[, ancbufsize[, flags]]) -> (data, ancdata, msg_flags, address)\n\
3997 The return value is a 4-tuple: (data, ancdata, msg_flags, address).\n\
3998 The data item is a bytes object holding the non-ancillary data\n\
4002 specifying the protocol level and protocol-specific type respectively,\n\
4057 "of single-segment read-write buffers", in sock_recvmsg_into()
4076 "recvmsg_into(buffers[, ancbufsize[, flags]]) -> (nbytes, ancdata, msg_flags, address)\n\
4079 non-ancillary data into a series of buffers. The buffers argument\n\
4082 of the non-ancillary data until it has all been written or there are\n\
4091 The return value is a 4-tuple: (nbytes, ancdata, msg_flags, address).\n\
4092 The nbytes item is the total number of bytes of non-ancillary data\n\
4096 integers specifying the protocol level and protocol-specific type\n\
4123 if (ctx->len > INT_MAX) in sock_send_impl()
4124 ctx->len = INT_MAX; in sock_send_impl()
4125 ctx->result = send(s->sock_fd, ctx->buf, (int)ctx->len, ctx->flags); in sock_send_impl()
4127 ctx->result = send(s->sock_fd, ctx->buf, ctx->len, ctx->flags); in sock_send_impl()
4129 return (ctx->result >= 0); in sock_send_impl()
4161 "send(data[, flags]) -> count\n\
4178 int has_timeout = (s->sock_timeout > 0); in sock_sendall()
4179 _PyTime_t interval = s->sock_timeout; in sock_sendall()
4198 interval = deadline - _PyTime_GetMonotonicClock(); in sock_sendall()
4202 deadline = _PyTime_GetMonotonicClock() + s->sock_timeout; in sock_sendall()
4220 len -= n; in sock_sendall()
4262 if (ctx->len > INT_MAX) in sock_sendto_impl()
4263 ctx->len = INT_MAX; in sock_sendto_impl()
4264 ctx->result = sendto(s->sock_fd, ctx->buf, (int)ctx->len, ctx->flags, in sock_sendto_impl()
4265 SAS2SA(ctx->addrbuf), ctx->addrlen); in sock_sendto_impl()
4267 ctx->result = sendto(s->sock_fd, ctx->buf, ctx->len, ctx->flags, in sock_sendto_impl()
4268 SAS2SA(ctx->addrbuf), ctx->addrlen); in sock_sendto_impl()
4270 return (ctx->result >= 0); in sock_sendto_impl()
4335 "sendto(data[, flags], address) -> count\n\
4355 int result = -1; in sock_sendmsg_iovec()
4375 msg->msg_iovlen = ndataparts; in sock_sendmsg_iovec()
4382 msg->msg_iov = iovs; in sock_sendmsg_iovec()
4393 "bytes-like objects", in sock_sendmsg_iovec()
4412 ctx->result = sendmsg(s->sock_fd, ctx->msg, ctx->flags); in sock_sendmsg_impl()
4413 return (ctx->result >= 0); in sock_sendmsg_impl()
4464 if (sock_sendmsg_iovec(s, data_arg, &msg, &databufs, &ndatabufs) == -1) {
4537 returns NULL if it doesn't. Zero-filling the buffer
4560 cmsgh->cmsg_len = msg_len;
4570 cmsgh->cmsg_level = cmsgs[i].level;
4571 cmsgh->cmsg_type = cmsgs[i].type;
4604 "sendmsg(buffers[, ancdata[, flags[, address]]]) -> count\n\
4607 non-ancillary data from a series of buffers and concatenating it into\n\
4608 a single message. The buffers argument specifies the non-ancillary\n\
4609 data as an iterable of bytes-like objects (e.g. bytes objects).\n\
4613 protocol level and protocol-specific type respectively, and cmsg_data\n\
4614 is a bytes-like object holding the associated data. The flags\n\
4617 the message. The return value is the number of bytes of non-ancillary\n\
4634 int op = -1;
4637 int assoclen = -1;
4650 if (self->sock_family != AF_ALG) {
4666 /* op is a required, keyword-only argument >= 0 */
4679 if (assoclen == -1 && PyErr_Occurred()) {
4710 if (sock_sendmsg_iovec(self, data_arg, &msg, &databufs, &ndatabufs) == -1) {
4722 header->cmsg_level = SOL_ALG;
4723 header->cmsg_type = ALG_SET_OP;
4724 header->cmsg_len = CMSG_LEN(4);
4736 header->cmsg_level = SOL_ALG;
4737 header->cmsg_type = ALG_SET_IV;
4738 header->cmsg_len = CMSG_SPACE(sizeof(*alg_iv) + iv.len);
4740 alg_iv->ivlen = iv.len;
4741 memcpy(alg_iv->iv, iv.buf, iv.len);
4752 header->cmsg_level = SOL_ALG;
4753 header->cmsg_type = ALG_SET_AEAD_ASSOCLEN;
4754 header->cmsg_len = CMSG_LEN(4);
4796 if (how == -1 && PyErr_Occurred())
4799 res = shutdown(s->sock_fd, how);
4802 return s->errorhandler();
4828 if (WSAIoctl(s->sock_fd, cmd, &option, sizeof(option),
4838 if (WSAIoctl(s->sock_fd, cmd, &ka, sizeof(ka),
4848 if (WSAIoctl(s->sock_fd, cmd, &option, sizeof(option),
4860 "ioctl(cmd, option) -> long\n\
4880 result = WSADuplicateSocketW(s->sock_fd, processId, &info);
4887 "share(process_id) -> bytes\n\
4920 {"getsockopt", (PyCFunction)sock_getsockopt, METH_VARARGS,
4998 if (s->sock_fd != INVALID_SOCKET) {
5010 fd = s->sock_fd;
5011 s->sock_fd = INVALID_SOCKET;
5029 Py_TYPE(s)->tp_free((PyObject *)s);
5038 if (s->sock_fd == INVALID_SOCKET) {
5039 sock_fd = -1;
5042 else if (s->sock_fd > LONG_MAX) {
5053 sock_fd = (long)s->sock_fd;
5056 sock_fd, s->sock_family,
5057 s->sock_type,
5058 s->sock_proto);
5069 new = type->tp_alloc(type, 0);
5071 ((PySocketSockObject *)new)->sock_fd = INVALID_SOCKET;
5072 ((PySocketSockObject *)new)->sock_timeout = _PyTime_FromSeconds(-1);
5073 ((PySocketSockObject *)new)->errorhandler = &set_error;
5084 static int sock_cloexec_works = -1;
5094 int family = -1, type = -1, proto = -1;
5107 return -1;
5116 return -1;
5129 return -1;
5136 return -1;
5145 return -1;
5155 if (fd == (SOCKET_T)(-1) && PyErr_Occurred())
5156 return -1;
5163 return -1;
5172 if (family == -1) {
5173 family = SAS2SA(&addrbuf)->sa_family;
5180 if (family == -1 || CHECK_ERRNO(ENOTSOCK)) {
5183 if (family == -1 || CHECK_ERRNO(EBADF) || CHECK_ERRNO(ENOTSOCK)) {
5186 return -1;
5190 if (type == -1) {
5193 if (getsockopt(fd, SOL_SOCKET, SO_TYPE,
5199 return -1;
5206 if (proto == -1) {
5209 if (getsockopt(fd, SOL_SOCKET, SO_PROTOCOL,
5215 return -1;
5225 if (family == -1) {
5228 if (type == -1) {
5231 if (proto == -1) {
5258 return -1;
5265 return -1;
5274 if (sock_cloexec_works == -1) {
5294 return -1;
5299 return -1;
5303 if (init_sockobject(s, fd, family, type, proto) == -1) {
5305 return -1;
5417 res = gethostname(buf, (int) sizeof buf - 1);
5421 buf[sizeof buf - 1] = '\0';
5427 "gethostname() -> string\n\
5497 "gethostbyname(host) -> address\n\
5510 /* Decode from UTF-8 */
5533 if (h->h_addrtype != af) {
5563 if (h->h_aliases) {
5564 for (pch = h->h_aliases; *pch != NULL; pch++) {
5578 for (pch = h->h_addr_list; *pch != NULL; pch++) {
5594 if (pch == h->h_addr_list && alen >= sizeof(sin))
5611 if (pch == h->h_addr_list && alen >= sizeof(sin6))
5633 name = sock_decode_hostname(h->h_name);
5662 int buf_len = (sizeof buf) - 1;
5703 sa->sa_family);
5713 "gethostbyname_ex(host) -> (name, aliaslist, addresslist)\n\
5736 gethostbyaddr_r is 8-byte aligned, which at least llvm-gcc
5740 int buf_len = (sizeof buf) - 1;
5759 af = sa->sa_family;
5764 ap = (char *)&((struct sockaddr_in *)sa)->sin_addr;
5765 al = sizeof(((struct sockaddr_in *)sa)->sin_addr);
5769 ap = (char *)&((struct sockaddr_in6 *)sa)->sin6_addr;
5770 al = sizeof(((struct sockaddr_in6 *)sa)->sin6_addr);
5809 "gethostbyaddr(host) -> (name, aliaslist, addresslist)\n\
5839 return PyLong_FromLong((long) ntohs(sp->s_port));
5843 "getservbyname(servicename[, protocolname]) -> integer\n\
5866 "getservbyport: port must be 0-65535.");
5881 return PyUnicode_FromString(sp->s_name);
5885 "getservbyport(port[, protocolname]) -> string\n\
5910 return PyLong_FromLong((long) sp->p_proto);
5914 "getprotobyname(name) -> integer\n\
5925 if (fd == (SOCKET_T)(-1) && PyErr_Occurred())
5930 /* bpo-30319: The peer can already have closed the connection.
5939 "close(integer) -> None\n\
5957 if (fd == (SOCKET_T)(-1) && PyErr_Occurred())
5989 "dup(integer) -> integer\n\
6030 if (sock_cloexec_works == -1) {
6077 "socketpair([family[, type [, proto]]]) -> (socket object, socket object)\n\
6098 "16-bit unsigned integer");
6104 "16-bit unsigned integer");
6111 "ntohs(integer) -> integer\n\
6113 Convert a 16-bit unsigned integer from network to host byte order.");
6123 if (x == (unsigned long) -1 && PyErr_Occurred())
6140 Py_TYPE(arg)->tp_name);
6145 "ntohl(integer) -> integer\n\
6147 Convert a 32-bit integer from network to host byte order.");
6161 "16-bit unsigned integer");
6167 "16-bit unsigned integer");
6174 "htons(integer) -> integer\n\
6176 Convert a 16-bit unsigned integer from host to network byte order.");
6186 if (x == (unsigned long) -1 && PyErr_Occurred())
6203 Py_TYPE(arg)->tp_name);
6208 "htonl(integer) -> integer\n\
6210 Convert a 32-bit integer from host to network byte order.");
6215 "inet_aton(string) -> bytes giving packed 32-bit IP representation\n\
6217 Convert an IP address in string format (123.45.67.89) to the 32-bit packed\n\
6218 binary format used in low-level network functions.");
6229 #error "Not sure if in_addr_t exists and int is not 32-bits."
6261 /* special-case this address as inet_addr might return INADDR_NONE
6287 "inet_ntoa(packed_ip) -> ip_address_string\n\
6289 Convert an IP address from 32-bit packed binary format to string format");
6318 "inet_pton(af, ip) -> packed IP address string\n\
6321 for use with low-level network functions.");
6369 "inet_ntop(af, packed_ip) -> string formatted IP address\n\
6412 /* inet_ntop guarantee NUL-termination of resulting string. */
6468 if (value == -1 && PyErr_Occurred())
6515 for (res = res0; res; res = res->ai_next) {
6518 makesockaddr(-1, res->ai_addr, res->ai_addrlen, protocol);
6521 single = Py_BuildValue("iiisO", res->ai_family,
6522 res->ai_socktype, res->ai_protocol,
6523 res->ai_canonname ? res->ai_canonname : "",
6549 -> list of (family, type, proto, canonname, sockaddr)\n\
6585 "getnameinfo(): flowinfo must be 0-1048575.");
6605 if (res->ai_next) {
6610 switch (res->ai_family) {
6624 sin6 = (struct sockaddr_in6 *)res->ai_addr;
6625 sin6->sin6_flowinfo = htonl(flowinfo);
6626 sin6->sin6_scope_id = scope_id;
6631 error = getnameinfo(res->ai_addr, (socklen_t) res->ai_addrlen,
6650 "getnameinfo(sockaddr, flags) --> (host, port)\n\
6670 "getdefaulttimeout() -> timeout\n\
6714 for (ULONG i = 0; i < tbl->NumEntries; ++i) {
6715 MIB_IF_ROW2 r = tbl->Table[i];
6725 if (tuple == NULL || PyList_Append(list, tuple) == -1) {
6755 they access the not-msan-tracked if_name string data. */
6766 if (ni_tuple == NULL || PyList_Append(list, ni_tuple) == -1) {
6825 if (index == (unsigned long) -1)
6863 "CMSG_LEN(length) -> control message length\n\
6894 "CMSG_SPACE(length) -> buffer size\n\
7036 Py_DECREF(capi->Sock_Type);
7037 Py_DECREF(capi->error);
7038 Py_DECREF(capi->timeout_error);
7058 capi->Sock_Type = (PyTypeObject *)Py_NewRef(&sock_type);
7059 capi->error = Py_NewRef(PyExc_OSError);
7060 capi->timeout_error = Py_NewRef(PyExc_TimeoutError);
7070 os-specific initialization fails. On Windows, this does WINSOCK
7084 -1,
7101 if (support_wsa_no_inherit == -1) {
8402 /* remove some flags on older version Windows during run-time */