Skip to content

Error with X11 Forwarding #459

Open
Open
@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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions