Skip to content

Error with X11 Forwarding #459

@mattmix

Description

@mattmix

Users see 'could not bind local socket: Invalid argument' in their error stream when using qsub -X. The error originates from

fprintf(stderr, "could not bind local socket: %s", strerror(errno));

It is because the get_local_address() function returns a sa_family=AF_INET struct but the loop at

for (ai = aitop; ai; ai = ai->ai_next)
{
/* Create a socket. */
sock = socket(ai->ai_family, SOCK_STREAM, 0);
if (sock < 0)
{
fprintf(stderr, "socket: %.100s", strerror(errno));
continue;
}
#ifdef BIND_OUTBOUND_SOCKETS
/* Bind to the IP address associated with the hostname, in case there are
* muliple possible source IPs for this destination.*/
// don't bind localhost addr
if (!islocalhostaddr(&local))
{
if (bind(sock, (struct sockaddr *)&local, sizeof(sockaddr_in)))
{
fprintf(stderr, "could not bind local socket: %s", strerror(errno));
close(sock);
continue;
}
}
#endif
will attempt to bind all types, causing bind to be called on a AF_INET6 socket with a AF_INET argument and producing the error message.

I've submitted #458 as a potential fix, but should probably be revisited so that it will work with IPv6. Note that the IPv6 limitation is one of get_local_address() and not the patch.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions