do not use own structs for sockaddr_sstorage and sockaddr_in6

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2020-11-16 22:30:47 +02:00
parent ced2eca1da
commit 9de6b2b391
2 changed files with 4 additions and 30 deletions

View file

@ -470,7 +470,7 @@ QHostAddress::QHostAddress(const struct sockaddr *sockaddr)
setAddress(htonl(((sockaddr_in *)sockaddr)->sin_addr.s_addr));
#ifndef QT_NO_IPV6
else if (sockaddr->sa_family == AF_INET6)
setAddress(((qt_sockaddr_in6 *)sockaddr)->sin6_addr.qt_s6_addr);
setAddress(((sockaddr_in6 *)sockaddr)->sin6_addr.s6_addr);
#endif
}
@ -621,7 +621,7 @@ void QHostAddress::setAddress(const struct sockaddr *sockaddr)
setAddress(htonl(((sockaddr_in *)sockaddr)->sin_addr.s_addr));
#ifndef QT_NO_IPV6
else if (sockaddr->sa_family == AF_INET6)
setAddress(((qt_sockaddr_in6 *)sockaddr)->sin6_addr.qt_s6_addr);
setAddress(((sockaddr_in6 *)sockaddr)->sin6_addr.s6_addr);
#endif
}

View file

@ -52,37 +52,11 @@
QT_BEGIN_NAMESPACE
// Use our own defines and structs which we know are correct
# define QT_SS_MAXSIZE 128
# define QT_SS_ALIGNSIZE (sizeof(qint64))
# define QT_SS_PAD1SIZE (QT_SS_ALIGNSIZE - sizeof (short))
# define QT_SS_PAD2SIZE (QT_SS_MAXSIZE - (sizeof (short) + QT_SS_PAD1SIZE + QT_SS_ALIGNSIZE))
struct qt_sockaddr_storage {
short ss_family;
char __ss_pad1[QT_SS_PAD1SIZE];
qint64 __ss_align;
char __ss_pad2[QT_SS_PAD2SIZE];
};
// sockaddr_in6 size changed between old and new SDK
// Only the new version is the correct one, so always
// use this structure.
struct qt_in6_addr {
quint8 qt_s6_addr[16];
};
struct qt_sockaddr_in6 {
short sin6_family; /* AF_INET6 */
quint16 sin6_port; /* Transport level port number */
quint32 sin6_flowinfo; /* IPv6 flow information */
struct qt_in6_addr sin6_addr; /* IPv6 address */
quint32 sin6_scope_id; /* set of interfaces for a scope */
};
union qt_sockaddr {
sockaddr a;
sockaddr_in a4;
qt_sockaddr_in6 a6;
qt_sockaddr_storage storage;
sockaddr_in6 a6;
sockaddr_storage storage;
};
class QNativeSocketEnginePrivate;