{
struct sockaddr_in* addr;
char *host;
- int port;
+ int port, result;
addr=(struct sockaddr_in*)&(s->sock_addr).in;
if (!PyTuple_Check(args)) {
PyErr_Format(
if (!PyArg_ParseTuple(args, "eti:getsockaddrarg",
"idna", &host, &port))
return 0;
- if (setipaddr(host, (struct sockaddr *)addr, sizeof(*addr), AF_INET) < 0)
+ result = setipaddr(host, (struct sockaddr *)addr,
+ sizeof(*addr), AF_INET);
+ PyMem_Free(host);
+ if (result < 0)
return 0;
addr->sin_family = AF_INET;
addr->sin_port = htons((short)port);
{
struct sockaddr_in6* addr;
char *host;
- int port, flowinfo, scope_id;
+ int port, flowinfo, scope_id, result;
addr = (struct sockaddr_in6*)&(s->sock_addr).in6;
flowinfo = scope_id = 0;
if (!PyArg_ParseTuple(args, "eti|ii",
&scope_id)) {
return 0;
}
- if (setipaddr(host, (struct sockaddr *)addr, sizeof(*addr), AF_INET6) < 0)
+ result = setipaddr(host, (struct sockaddr *)addr,
+ sizeof(*addr), AF_INET6);
+ PyMem_Free(host);
+ if (result < 0)
return 0;
addr->sin6_family = s->sock_family;
addr->sin6_port = htons((short)port);
pptr = (char *)NULL;
} else {
PyErr_SetString(socket_error, "Int or String expected");
- return NULL;
+ goto err;
}
memset(&hints, 0, sizeof(hints));
hints.ai_family = family;
RELEASE_GETADDRINFO_LOCK /* see comment in setipaddr() */
if (error) {
set_gaierror(error);
- return NULL;
+ goto err;
}
if ((all = PyList_New(0)) == NULL)