File openslp.diff of Package openslp

--- ./common/slp_iface.c.orig	2006-09-12 13:17:00.000000000 +0000
+++ ./common/slp_iface.c	2006-09-12 13:17:08.000000000 +0000
@@ -128,6 +128,7 @@ int SLPIfaceGetInfo(const char* useiface
     #endif
     {
         perror("ioctl failed");
+        close(fd);
         return 1;
     }
 
@@ -183,6 +184,7 @@ int SLPIfaceGetInfo(const char* useiface
         }
     }
 
+    close(fd);
     return 0;
 }
 #else
--- ./common/slp_net.c.orig	2006-09-12 13:17:00.000000000 +0000
+++ ./common/slp_net.c	2006-09-12 13:17:08.000000000 +0000
@@ -92,7 +92,7 @@ int SLPNetGetThisHostname(char** hostfdn
             }
             else
             {
-                ifaddr.s_addr = *((unsigned long*)he->h_addr);
+                ifaddr = *((struct in_addr *)he->h_addr);
                 *hostfdn = xstrdup(inet_ntoa(ifaddr));
             }
             
--- ./common/slp_spi.c.orig	2006-09-12 13:17:00.000000000 +0000
+++ ./common/slp_spi.c	2006-09-12 13:17:08.000000000 +0000
@@ -267,9 +267,9 @@ SLPSpiHandle SLPSpiOpen(const char* spif
     fp = fopen(spifile,"r");
     if(fp)
     {
-        result = xmalloc(sizeof(structSLPSpiHandle));
+        result = xmalloc(sizeof(struct _SLPSpiHandle));
         if(result == 0) return 0;
-        memset(result, 0, sizeof(structSLPSpiHandle));
+        memset(result, 0, sizeof(struct _SLPSpiHandle));
         
         result->spifile = xstrdup(spifile);
         result->cacheprivate = cacheprivate;
--- ./configure.in.orig	2006-09-12 13:17:00.000000000 +0000
+++ ./configure.in	2006-09-12 13:17:08.000000000 +0000
@@ -171,5 +171,12 @@ AC_CHECK_LIB(socket, main)
 AC_CHECK_LIB(nsl, gethostbyname)
 AC_CHECK_LIB(m, main)
 AC_CHECK_FUNCS(ceil log10 strncasecmp strcasecmp )
-AC_OUTPUT(Makefile common/Makefile libslpattr/Makefile libslp/Makefile \
-          slpd/Makefile slptool/Makefile test/Makefile slp.list)
+AC_CONFIG_FILES([ Makefile ])
+AC_CONFIG_FILES([ common/Makefile ])
+AC_CONFIG_FILES([ libslpattr/Makefile ])
+AC_CONFIG_FILES([ libslp/Makefile ])
+AC_CONFIG_FILES([ slpd/Makefile ])
+AC_CONFIG_FILES([ slptool/Makefile ])
+AC_CONFIG_FILES([ test/Makefile ])
+AC_CONFIG_FILES([ slp.list ])
+AC_OUTPUT
--- ./etc/slp.reg.orig	2006-09-12 13:17:00.000000000 +0000
+++ ./etc/slp.reg	2006-09-12 13:17:08.000000000 +0000
@@ -37,3 +37,10 @@
 ##Register telnet service with no attributes 
 #service:telnet.myorg://192.168.100.1,en,65535 
 #use default scopes
+
+##Register vnc kdm service, can be used via krdc
+#service:remotedesktop.kde:vnc://192.168.100.1:1,en,65535
+#attrid=(type=shared),(username=joe),(fullname=Joe User),(serviceid=1235456)
+#description=KDE remote login
+
+
--- ./slpd/slpd_incoming.c.orig	2006-09-12 13:17:00.000000000 +0000
+++ ./slpd/slpd_incoming.c	2006-09-12 13:19:18.000000000 +0000
@@ -137,11 +137,11 @@ void IncomingStreamWrite(SLPList* sockli
         sock->state = STREAM_WRITE;
     }
 
-    if (sock->sendbuf->end - sock->sendbuf->start != 0)
+    if (sock->sendbuf->end - sock->sendbuf->curpos != 0)
     {
         byteswritten = send(sock->fd,
                             sock->sendbuf->curpos,
-                            sock->sendbuf->end - sock->sendbuf->start,
+                            sock->sendbuf->end - sock->sendbuf->curpos,
                             flags);
         if (byteswritten > 0)
         {
@@ -157,9 +157,9 @@ void IncomingStreamWrite(SLPList* sockli
         else
         {
 #ifdef _WIN32
-            if (WSAEWOULDBLOCK == WSAGetLastError())
+            if (WSAEWOULDBLOCK != WSAGetLastError())
 #else
-            if (errno == EWOULDBLOCK)
+            if (errno != EWOULDBLOCK)
 #endif
             {
                 /* Error occured or connection was closed */
@@ -516,6 +516,7 @@ int SLPDIncomingInit()
         /* Create socket that will handle multicast UDP.                  */
         /*----------------------------------------------------------------*/
 
+        mcastaddr.s_addr = htonl(SLP_MCAST_ADDRESS);
         sock =  SLPDSocketCreateBoundDatagram(&myaddr,
                                               &mcastaddr,
                                               DATAGRAM_MULTICAST);
--- ./slpd/slpd_outgoing.c.orig	2002-12-03 21:04:54.000000000 +0000
+++ ./slpd/slpd_outgoing.c	2006-09-12 13:19:47.000000000 +0000
@@ -328,11 +328,11 @@ void OutgoingStreamWrite(SLPList* sockli
         sock->state = STREAM_WRITE;
     }
 
-    if ( sock->sendbuf->end - sock->sendbuf->start > 0 )
+    if ( sock->sendbuf->end - sock->sendbuf->curpos > 0 )
     {
         byteswritten = send(sock->fd,
                             sock->sendbuf->curpos,
-                            sock->sendbuf->end - sock->sendbuf->start,
+                            sock->sendbuf->end - sock->sendbuf->curpos,
                             flags);
         if ( byteswritten > 0 )
         {
--- ./slpd/slpd_socket.c.orig	2006-09-12 13:17:00.000000000 +0000
+++ ./slpd/slpd_socket.c	2006-09-12 13:17:08.000000000 +0000
@@ -183,7 +183,7 @@ int DropSLPMulticastGroup(sockfd_t sockf
     memcpy(&mreq.imr_multiaddr, maddr, sizeof(struct in_addr));
 
     /* drop for the specified interface */
-    memcpy(&mreq.imr_interface,addr,sizeof(addr));
+    memcpy(&mreq.imr_interface,addr,sizeof(struct in_addr));
 
     return setsockopt(sockfd, IPPROTO_IP, IP_DROP_MEMBERSHIP, (char*)&mreq,sizeof(mreq));               
 }