]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/ccp.c
Add --prefix and --sysconfdir options to configure, and put
[ppp.git] / pppd / ccp.c
index 440ddc8f3cb8d14141daf6fbe5bdab14523130fe..bbdaad66490c58da6e17f01fcc7916e517c51f46 100644 (file)
@@ -33,7 +33,7 @@
  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#define RCSID  "$Id: ccp.c,v 1.44 2003/03/05 23:01:28 fcusack Exp $"
+#define RCSID  "$Id: ccp.c,v 1.46 2003/05/01 12:30:28 paulus Exp $"
 
 #include <stdlib.h>
 #include <string.h>
@@ -727,21 +727,25 @@ ccp_addci(f, p, lenp)
        p[1] = CILEN_DEFLATE;
        p[2] = DEFLATE_MAKE_OPT(go->deflate_size);
        p[3] = DEFLATE_CHK_SEQUENCE;
-       for (;;) {
-           if (go->deflate_size < DEFLATE_MIN_WORKS) {
-               go->deflate = 0;
-               break;
-           }
-           res = ccp_test(f->unit, p, CILEN_DEFLATE, 0);
-           if (res > 0) {
-               p += CILEN_DEFLATE;
-               break;
-           } else if (res < 0) {
-               go->deflate = 0;
-               break;
+       if (p != p0) {
+           p += CILEN_DEFLATE;
+       } else {
+           for (;;) {
+               if (go->deflate_size < DEFLATE_MIN_WORKS) {
+                   go->deflate = 0;
+                   break;
+               }
+               res = ccp_test(f->unit, p, CILEN_DEFLATE, 0);
+               if (res > 0) {
+                   p += CILEN_DEFLATE;
+                   break;
+               } else if (res < 0) {
+                   go->deflate = 0;
+                   break;
+               }
+               --go->deflate_size;
+               p[2] = DEFLATE_MAKE_OPT(go->deflate_size);
            }
-           --go->deflate_size;
-           p[2] = DEFLATE_MAKE_OPT(go->deflate_size);
        }
        if (p != p0 && go->deflate_correct && go->deflate_draft) {
            p[0] = CI_DEFLATE_DRAFT;
@@ -916,11 +920,13 @@ ccp_nakci(f, p, len)
         * Fail if we aren't willing to use his suggestion.
         */
        MPPE_CI_TO_OPTS(&p[2], try.mppe);
-       if ((try.mppe & MPPE_OPT_STATEFUL) && refuse_mppe_stateful)
+       if ((try.mppe & MPPE_OPT_STATEFUL) && refuse_mppe_stateful) {
+           error("Refusing MPPE stateful mode offered by peer");
            try.mppe = 0;
-       else if (((go->mppe | MPPE_OPT_STATEFUL) & try.mppe) != try.mppe)
+       } else if (((go->mppe | MPPE_OPT_STATEFUL) & try.mppe) != try.mppe) {
            /* Peer must have set options we didn't request (suggest) */
            try.mppe = 0;
+       }
 
        if (!try.mppe) {
            error("MPPE required but peer negotiation failed");
@@ -1008,31 +1014,26 @@ ccp_rejci(f, p, len)
        len -= CILEN_MPPE;
     }
 #endif
-    if (go->deflate && len >= CILEN_DEFLATE
-       && p[0] == (go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT)
-       && p[1] == CILEN_DEFLATE) {
+    if (go->deflate_correct && len >= CILEN_DEFLATE
+       && p[0] == CI_DEFLATE && p[1] == CILEN_DEFLATE) {
        if (p[2] != DEFLATE_MAKE_OPT(go->deflate_size)
            || p[3] != DEFLATE_CHK_SEQUENCE)
            return 0;           /* Rej is bad */
-       if (go->deflate_correct)
-           try.deflate_correct = 0;
-       else
-           try.deflate_draft = 0;
+       try.deflate_correct = 0;
+       p += CILEN_DEFLATE;
+       len -= CILEN_DEFLATE;
+    }
+    if (go->deflate_draft && len >= CILEN_DEFLATE
+       && p[0] == CI_DEFLATE_DRAFT && p[1] == CILEN_DEFLATE) {
+       if (p[2] != DEFLATE_MAKE_OPT(go->deflate_size)
+           || p[3] != DEFLATE_CHK_SEQUENCE)
+           return 0;           /* Rej is bad */
+       try.deflate_draft = 0;
        p += CILEN_DEFLATE;
        len -= CILEN_DEFLATE;
-       if (go->deflate_correct && go->deflate_draft
-           && len >= CILEN_DEFLATE && p[0] == CI_DEFLATE_DRAFT
-           && p[1] == CILEN_DEFLATE) {
-           if (p[2] != DEFLATE_MAKE_OPT(go->deflate_size)
-               || p[3] != DEFLATE_CHK_SEQUENCE)
-               return 0;               /* Rej is bad */
-           try.deflate_draft = 0;
-           p += CILEN_DEFLATE;
-           len -= CILEN_DEFLATE;
-       }
-       if (!try.deflate_correct && !try.deflate_draft)
-           try.deflate = 0;
     }
+    if (!try.deflate_correct && !try.deflate_draft)
+       try.deflate = 0;
     if (go->bsd_compress && len >= CILEN_BSD_COMPRESS
        && p[0] == CI_BSD_COMPRESS && p[1] == CILEN_BSD_COMPRESS) {
        if (p[2] != BSD_MAKE_OPT(BSD_CURRENT_VERSION, go->bsd_bits))
@@ -1131,6 +1132,7 @@ ccp_reqci(f, p, lenp, dont_nak)
                     * the Internet -- which is where we expect MPPE.
                     */
                   if (refuse_mppe_stateful) {
+                       error("Refusing MPPE stateful mode offered by peer");
                        newret = CONFREJ;
                        break;
                    }