diff --git a/pjlib/src/pj/sock_bsd.c b/pjlib/src/pj/sock_bsd.c index 1554af8..046ca13 100644 --- a/pjlib/src/pj/sock_bsd.c +++ b/pjlib/src/pj/sock_bsd.c @@ -754,10 +754,27 @@ PJ_DEF(pj_status_t) pj_sock_connect( pj_sock_t sock, const pj_sockaddr_t *addr, int namelen) { + const pj_sockaddr *b = addr; PJ_CHECK_STACK(); - if (connect(sock, (struct sockaddr*)addr, namelen) != 0) + if (b->addr.sa_family == pj_AF_INET6()) { + char buf[PJ_INET6_ADDRSTRLEN]; + int len = sizeof(pj_sockaddr_in6); + pj_sockaddr c; + pj_sock_getsockname(sock, &c, &len); + pj_sockaddr_print(&c, buf, sizeof(buf), 1 | 2); + printf ("On v6 connect, trying to connect from socket bound to %s\n", buf); + printf ("Address family is really %sset correctly\n", c.addr.sa_family == AF_INET6 ? "" : "NOT "); + printf ("And the len after getsockname is %d\n", len); + pj_sockaddr_print(b, buf, sizeof(buf), 1 | 2); + printf ("On v6 connect, trying to connect to %s\n", buf); + printf ("Address family is really %sset correctly\n", b->addr.sa_family == AF_INET6 ? "" : "NOT "); + printf ("And the len is %d\n", namelen); + + } + if (connect(sock, (struct sockaddr*)b, namelen) != 0) { + printf("connect failed: %d(%s)\n", errno, strerror(errno)); return PJ_RETURN_OS_ERROR(pj_get_native_netos_error()); - else + } else return PJ_SUCCESS; }