[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-devel
Subject: [PATCH] remove duplicate code from kdelibs/kdecore/ksock.cpp
From: Matthias Welwarsky <matze () stud ! fbi ! fh-darmstadt ! de>
Date: 2001-06-18 9:03:03
[Download RAW message or body]
Hi all,
the following patch removes some duplicate code from KServerSocket, KSocket.
It changes the ipv4_addr() and port() methods to make use of
KInetSocketAddress instead of KSocketAddress. It removes code that is already
in KInetSocketAddress.
regards,
Matthias
["ksock.cpp.patch" (text/x-c++)]
Index: ksock.cpp
===================================================================
RCS file: /cvs/kdelibs/kdecore/ksock.cpp,v
retrieving revision 1.79
diff -u -r1.79 ksock.cpp
--- ksock.cpp 2001/06/11 00:32:41 1.79
+++ ksock.cpp 2001/06/18 08:31:33
@@ -214,22 +214,19 @@
unsigned long KSocket::ipv4_addr()
{
unsigned long retval = 0;
- KSocketAddress *sa = KExtendedSocket::peerAddress(sock);
- if (sa == NULL)
+
+ // MW use KInetSocketAddress, no need to duplicate code
+ KInetSocketAddress *sa = dynamic_cast<KInetSocketAddress*>(KExtendedSocket::peerAddress(sock));
+ if (sa == NULL) // MW not a KInetSocketAddress or empty
return 0;
- if (sa->address() != NULL && (sa->address()->sa_family == PF_INET
-#ifdef PF_INET6
- || sa->address()->sa_family == PF_INET6
-#endif
- ))
- {
- KInetSocketAddress *ksin = (KInetSocketAddress*)sa;
- const sockaddr_in *sin = ksin->addressV4();
- if (sin != NULL)
- retval = *(unsigned long*)&sin->sin_addr; // I told you this was dumb
- }
+ const sockaddr_in *sin = sa->addressV4();
+ if (sin != NULL) // MW V4 or convertible V6
+ retval = sin->sin_addr.s_addr;
+
delete sa;
+
+ kdDebug() << "KSocket::ipv4_addr() = " << inet_ntoa(sin->sin_addr) << endl;
return retval;
}
@@ -382,47 +379,33 @@
{
if (d == NULL || d->ks == NULL || sock == -1)
return 0;
- const KSocketAddress *sa = d->ks->localAddress();
- if (sa == NULL)
+
+ // MW use KInetSocketAddress
+ // why would we want to duplicate code?
+ const KInetSocketAddress *sa = dynamic_cast<const KInetSocketAddress*>(d->ks->localAddress());
+ if (sa == NULL) // MW not a KInetSocketAddress or empty
return 0;
- // we can use sockaddr_in here even if it isn't IPv4
- sockaddr_in *sin = (sockaddr_in*)sa->address();
+ return sa->port();
- if (sin->sin_family == PF_INET)
- // correct family
- return sin->sin_port;
-#ifdef PF_INET6
- else if (sin->sin_family == PF_INET6)
- {
- kde_sockaddr_in6 *sin6 = (kde_sockaddr_in6*)sin;
- return sin6->sin6_port;
- }
-#endif
- return 0; // not a port we know
}
unsigned long KServerSocket::ipv4_addr()
{
if (d == NULL || d->ks == NULL || sock == -1)
return 0;
- const KSocketAddress *sa = d->ks->localAddress();
- const sockaddr_in *sin = (sockaddr_in*)sa->address();
+ const KInetSocketAddress *sa = dynamic_cast<const KInetSocketAddress*>(d->ks->localAddress());
+ if (sa == NULL) // MW not a KInetSocketAddress or empty
+ return 0;
- if (sin->sin_family == PF_INET)
- // correct family
- return ntohl(*(unsigned long*)&sin->sin_addr);
-#ifdef PF_INET6
- else if (sin->sin_family == PF_INET6)
- {
- KInetSocketAddress *ksin = (KInetSocketAddress*)sa;
- sin = ksin->addressV4();
- if (sin != NULL)
- return *(unsigned long*)&sin->sin_addr;
- }
-#endif
- return 0; // this is dumb, isn't it?
+ const sockaddr_in *sin = sa->addressV4();
+ if (sin == NULL) // MW not convertible
+ return 0;
+
+ kdDebug() << "KServerSocket::ipv4_addr() = " << inet_ntoa(sin->sin_addr) << endl;
+
+ return sin->sin_addr.s_addr;
}
void KServerSocket::slotAccept( int )
>> Visit http://master.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic