aboutsummaryrefslogtreecommitdiffstats
path: root/python/gevent/dnshelper.c
diff options
context:
space:
mode:
Diffstat (limited to 'python/gevent/dnshelper.c')
-rw-r--r--python/gevent/dnshelper.c159
1 files changed, 0 insertions, 159 deletions
diff --git a/python/gevent/dnshelper.c b/python/gevent/dnshelper.c
deleted file mode 100644
index 3befb69..0000000
--- a/python/gevent/dnshelper.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* Copyright (c) 2011 Denis Bilenko. See LICENSE for details. */
-#include "Python.h"
-#ifdef CARES_EMBED
-#include "ares_setup.h"
-#endif
-
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-
-#include "ares.h"
-
-#include "cares_ntop.h"
-#include "cares_pton.h"
-
-#if PY_VERSION_HEX < 0x02060000
- #define PyUnicode_FromString PyString_FromString
-#elif PY_MAJOR_VERSION < 3
- #define PyUnicode_FromString PyBytes_FromString
-#endif
-
-
-static PyObject* _socket_error = 0;
-
-static PyObject*
-get_socket_object(PyObject** pobject, const char* name)
-{
- if (!*pobject) {
- PyObject* _socket;
- _socket = PyImport_ImportModule("_socket");
- if (_socket) {
- *pobject = PyObject_GetAttrString(_socket, name);
- if (!*pobject) {
- PyErr_WriteUnraisable(Py_None);
- }
- Py_DECREF(_socket);
- }
- else {
- PyErr_WriteUnraisable(Py_None);
- }
- if (!*pobject) {
- *pobject = PyExc_IOError;
- }
- }
- return *pobject;
-}
-
-
-static int
-gevent_append_addr(PyObject* list, int family, void* src, char* tmpbuf, size_t tmpsize) {
- int status = -1;
- PyObject* tmp;
- if (ares_inet_ntop(family, src, tmpbuf, tmpsize)) {
- tmp = PyUnicode_FromString(tmpbuf);
- if (tmp) {
- status = PyList_Append(list, tmp);
- Py_DECREF(tmp);
- }
- }
- return status;
-}
-
-
-static PyObject*
-parse_h_name(struct hostent *h)
-{
- return PyUnicode_FromString(h->h_name);
-}
-
-
-static PyObject*
-parse_h_aliases(struct hostent *h)
-{
- char **pch;
- PyObject *result = NULL;
- PyObject *tmp;
-
- result = PyList_New(0);
-
- if (result && h->h_aliases) {
- for (pch = h->h_aliases; *pch != NULL; pch++) {
- if (*pch != h->h_name && strcmp(*pch, h->h_name)) {
- int status;
- tmp = PyUnicode_FromString(*pch);
- if (tmp == NULL) {
- break;
- }
-
- status = PyList_Append(result, tmp);
- Py_DECREF(tmp);
-
- if (status) {
- break;
- }
- }
- }
- }
-
- return result;
-}
-
-
-static PyObject *
-parse_h_addr_list(struct hostent *h)
-{
- char **pch;
- PyObject *result = NULL;
-
- result = PyList_New(0);
-
- if (result) {
- switch (h->h_addrtype) {
- case AF_INET:
- {
- char tmpbuf[sizeof "255.255.255.255"];
- for (pch = h->h_addr_list; *pch != NULL; pch++) {
- if (gevent_append_addr(result, AF_INET, *pch, tmpbuf, sizeof(tmpbuf))) {
- break;
- }
- }
- break;
- }
- case AF_INET6:
- {
- char tmpbuf[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")];
- for (pch = h->h_addr_list; *pch != NULL; pch++) {
- if (gevent_append_addr(result, AF_INET6, *pch, tmpbuf, sizeof(tmpbuf))) {
- break;
- }
- }
- break;
- }
- default:
- PyErr_SetString(get_socket_object(&_socket_error, "error"), "unsupported address family");
- Py_DECREF(result);
- result = NULL;
- }
- }
-
- return result;
-}
-
-
-static int
-gevent_make_sockaddr(char* hostp, int port, int flowinfo, int scope_id, struct sockaddr_in6* sa6) {
- if ( ares_inet_pton(AF_INET, hostp, &((struct sockaddr_in*)sa6)->sin_addr.s_addr) > 0 ) {
- ((struct sockaddr_in*)sa6)->sin_family = AF_INET;
- ((struct sockaddr_in*)sa6)->sin_port = htons(port);
- return sizeof(struct sockaddr_in);
- }
- else if ( ares_inet_pton(AF_INET6, hostp, &sa6->sin6_addr.s6_addr) > 0 ) {
- sa6->sin6_family = AF_INET6;
- sa6->sin6_port = htons(port);
- sa6->sin6_flowinfo = flowinfo;
- sa6->sin6_scope_id = scope_id;
- return sizeof(struct sockaddr_in6);
- }
- return -1;
-}