File openslp.tcpknownda.diff of Package openslp.19128

--- slpd/slpd_knownda.c.orig	2018-12-06 14:03:06.033908426 +0000
+++ slpd/slpd_knownda.c	2018-12-06 14:12:30.448421700 +0000
@@ -261,7 +261,7 @@ void SLPDKnownDARegisterAll(SLPMessage *
    /*----------------------------------------------*/
    /* Establish a new connection with the known DA */
    /*----------------------------------------------*/
-   sock = SLPDOutgoingConnect(0, &(daadvert->peer));
+   sock = SLPDOutgoingConnect(1, &(daadvert->peer));
    if (sock)
       while (1)
       {
@@ -294,7 +294,8 @@ void SLPDKnownDARegisterAll(SLPMessage *
                /* link newly constructed buffer to socket resendlist, and send */
                /*--------------------------------------------------------------*/
                SLPListLinkTail(&(sock->sendlist), (SLPListItem *) sendbuf);
-               SLPDOutgoingDatagramWrite(sock, sendbuf);
+               if (sock->state == STREAM_CONNECT_IDLE)
+                  sock->state = STREAM_WRITE_FIRST;
             }
          }
       }
@@ -433,7 +434,7 @@ void SLPDKnownDADeregisterAll(SLPMessage
       return;
 
    /* Establish a new connection with the known DA */
-   sock = SLPDOutgoingConnect(0, &(daadvert->peer));
+   sock = SLPDOutgoingConnect(1, &(daadvert->peer));
    if (sock)
       while (1)
       {
@@ -459,7 +460,8 @@ void SLPDKnownDADeregisterAll(SLPMessage
                /* link newly constructed buffer to socket resendlist, and send */
                /*--------------------------------------------------------------*/
                SLPListLinkTail(&(sock->sendlist), (SLPListItem *) sendbuf);
-               SLPDOutgoingDatagramWrite(sock, sendbuf);
+               if (sock->state == STREAM_CONNECT_IDLE)
+                  sock->state = STREAM_WRITE_FIRST;
             }
          }
       }
@@ -502,14 +504,15 @@ int SLPDKnownDAFromDHCP()
                Get an outgoing socket to the DA and set it up to make
                the service:directoryagent request
               --------------------------------------------------------*/
-         sock = SLPDOutgoingConnect(0, &daaddr);
+         sock = SLPDOutgoingConnect(1, &daaddr);
          if (sock)
          {
             buf = 0;
             if (MakeActiveDiscoveryRqst(0, &buf) == 0)
             {
                SLPListLinkTail(&(sock->sendlist), (SLPListItem *) buf);
-               SLPDOutgoingDatagramWrite(sock, buf);
+               if (sock->state == STREAM_CONNECT_IDLE)
+                  sock->state = STREAM_WRITE_FIRST;
             }
          }
       }
@@ -601,14 +604,15 @@ int SLPKnownDAFromProperties()
                /* Get an outgoing socket to the DA and set it up to make */
                /* the service:directoryagent request                     */
                /*--------------------------------------------------------*/
-               sock = SLPDOutgoingConnect(0, &daaddr);
+               sock = SLPDOutgoingConnect(1, &daaddr);
                if (sock)
                {
                   buf = 0;
                   if (MakeActiveDiscoveryRqst(0, &buf) == 0)
                   {
                      SLPListLinkTail(&(sock->sendlist), (SLPListItem *) buf);
-                     SLPDOutgoingDatagramWrite(sock, buf);
+                     if (sock->state == STREAM_CONNECT_IDLE)
+                        sock->state = STREAM_WRITE_FIRST;
                   }
                }
             }
@@ -1470,14 +1474,15 @@ void SLPDKnownDAEcho(SLPMessage * msg, S
                /*------------------------------------------*/
                /* Load the socket with the message to send */
                /*------------------------------------------*/
-               sock = SLPDOutgoingConnect(0, &(entry->msg->peer));
+               sock = SLPDOutgoingConnect(1, &(entry->msg->peer));
                if (sock)
                {
                   dup = SLPBufferDup(buf);
                   if (dup)
                   {
                      SLPListLinkTail(&(sock->sendlist), (SLPListItem *) dup);
-                     SLPDOutgoingDatagramWrite(sock, buf);
+                     if (sock->state == STREAM_CONNECT_IDLE)
+                        sock->state = STREAM_WRITE_FIRST;
                   }
                   else
                      sock->state = SOCKET_CLOSE;
openSUSE Build Service is sponsored by