diff -ruN ppp-2.4.4.orig/pppd/cbcp.c ppp-2.4.4/pppd/cbcp.c --- ppp-2.4.4.orig/pppd/cbcp.c 2007-05-12 11:40:48 +0000 +++ ppp-2.4.4/pppd/cbcp.c 2007-05-12 15:30:59 +0000 @@ -589,6 +589,9 @@ else us->us_allowed = ( 1 << CB_CONF_USER ); + /* We always accept no callback users */ + us->us_allowed |= ( 1 << CB_CONF_NO ); + if (cbcp_init_hook) cbcp_init_hook( us ); @@ -764,7 +767,7 @@ if (cb_type == (1 << CB_CONF_NO )) { dbglog("cbcp_sendack CONF_NO"); PUTCHAR(CB_CONF_NO, bufp); - len = 3; + len = 2; PUTCHAR(len , bufp); PUTCHAR(0, bufp); cbcp_send(us, CBCP_ACK, buf, len); diff -ruN ppp-2.4.4.orig/pppd/main.c ppp-2.4.4/pppd/main.c --- ppp-2.4.4.orig/pppd/main.c 2007-05-12 11:40:48 +0000 +++ ppp-2.4.4/pppd/main.c 2007-05-12 15:20:00 +0000 @@ -568,7 +568,8 @@ if (callback_in_progress){ connector = NULL; cbcp_stop(); - remove_fd(fd_ppp); + if (fd_ppp != -1) + remove_fd(fd_ppp); clean_check(); the_channel->disestablish_ppp(devfd); fd_ppp = -1;