]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/plugins/rp-pppoe/plugin.c
Merge branch 'plog-usability' of https://github.com/mityada/ppp
[ppp.git] / pppd / plugins / rp-pppoe / plugin.c
index a8c2bb4f4a6aec1cb76f30ebfa5403f852cc092f..c89be94250bc660203beb0a163776fddbb5d074b 100644 (file)
@@ -270,12 +270,13 @@ PPPOEDisconnectDevice(void)
     memcpy(sp.sa_addr.pppoe.dev, conn->ifName, IFNAMSIZ);
     memcpy(sp.sa_addr.pppoe.remote, conn->peerEth, ETH_ALEN);
     if (connect(conn->sessionSocket, (struct sockaddr *) &sp,
-               sizeof(struct sockaddr_pppox)) < 0)
+               sizeof(struct sockaddr_pppox)) < 0 && errno != EALREADY)
        error("Failed to disconnect PPPoE socket: %d %m", errno);
     close(conn->sessionSocket);
-    /* don't send PADT?? */
-    if (conn->discoverySocket >= 0)
+    if (conn->discoverySocket >= 0) {
+        sendPADT(conn, NULL);
        close(conn->discoverySocket);
+    }
 }
 
 static void