If we receive no answer from the server when sending PAP

requests, give up (don't sit there indefinitely).
This commit is contained in:
Brian Somers 1999-02-01 13:42:25 +00:00
parent 4a735ee8b0
commit 8db502bbfd
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=43500
5 changed files with 28 additions and 13 deletions

View File

@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: auth.c,v 1.34 1998/12/17 00:28:12 brian Exp $
* $Id: auth.c,v 1.35 1999/01/28 01:56:30 brian Exp $
*
* TODO:
* o Implement check against with registered IP addresses.
@ -273,7 +273,8 @@ AuthTimeout(void *vauthp)
if (--authp->retry > 0) {
timer_Start(&authp->authtimer);
(*authp->ChallengeFunc)(authp, ++authp->id, authp->physical);
}
} else if (authp->FailedFunc)
(*authp->FailedFunc)(authp->physical);
}
void
@ -285,9 +286,11 @@ auth_Init(struct authinfo *authinfo)
void
auth_StartChallenge(struct authinfo *authp, struct physical *physical,
void (*fn)(struct authinfo *, int, struct physical *))
void (*chal)(struct authinfo *, int, struct physical *),
void (*fail)(struct physical *))
{
authp->ChallengeFunc = fn;
authp->ChallengeFunc = chal;
authp->FailedFunc = fail;
authp->physical = physical;
timer_Stop(&authp->authtimer);
authp->authtimer.func = AuthTimeout;

View File

@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: auth.h,v 1.11 1998/05/21 21:44:03 brian Exp $
* $Id: auth.h,v 1.12 1998/08/07 18:42:47 brian Exp $
*
* TODO:
*/
@ -25,6 +25,7 @@ struct bundle;
struct authinfo {
void (*ChallengeFunc)(struct authinfo *, int, struct physical *);
void (*FailedFunc)(struct physical *);
struct pppTimer authtimer;
int retry;
int id;
@ -39,8 +40,9 @@ extern const char *Auth2Nam(u_short);
extern void auth_Init(struct authinfo *);
extern void auth_StopTimer(struct authinfo *);
extern void auth_StartChallenge(struct authinfo *, struct physical *,
void (*fn)(struct authinfo *, int,
struct physical *));
void (*)(struct authinfo *, int,
struct physical *),
void (*)(struct physical *));
extern int auth_Validate(struct bundle *, const char *, const char *,
struct physical *);
extern char *auth_GetSecret(struct bundle *, const char *, int,

View File

@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: datalink.c,v 1.25 1999/01/20 18:06:52 brian Exp $
* $Id: datalink.c,v 1.26 1999/01/28 01:56:31 brian Exp $
*/
#include <sys/param.h>
@ -479,9 +479,11 @@ datalink_LayerUp(void *v, struct fsm *fp)
Auth2Nam(dl->physical->link.lcp.his_auth),
Auth2Nam(dl->physical->link.lcp.want_auth));
if (dl->physical->link.lcp.his_auth == PROTO_PAP)
auth_StartChallenge(&dl->pap, dl->physical, pap_SendChallenge);
auth_StartChallenge(&dl->pap, dl->physical, pap_SendChallenge,
pap_Failed);
if (dl->physical->link.lcp.want_auth == PROTO_CHAP)
auth_StartChallenge(&dl->chap.auth, dl->physical, chap_SendChallenge);
auth_StartChallenge(&dl->chap.auth, dl->physical, chap_SendChallenge,
NULL);
} else
datalink_AuthOk(dl);
}

View File

@ -18,7 +18,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: pap.c,v 1.27 1998/08/26 18:07:57 brian Exp $
* $Id: pap.c,v 1.28 1999/01/28 01:56:33 brian Exp $
*
* TODO:
*/
@ -137,6 +137,14 @@ PapValidate(struct bundle *bundle, u_char *name, u_char *key,
return auth_Validate(bundle, name, key, physical);
}
void
pap_Failed(struct physical *p)
{
auth_StopTimer(&p->dl->pap);
log_Printf(LogPHASE, "Pap: No response from server\n");
datalink_AuthNotOk(p->dl);
}
void
pap_Input(struct bundle *bundle, struct mbuf *bp, struct physical *physical)
{
@ -167,7 +175,6 @@ pap_Input(struct bundle *bundle, struct mbuf *bp, struct physical *physical)
* told that I got the answer right.
*/
datalink_AuthOk(physical->dl);
} else {
SendPapCode(php->id, PAP_NAK, "Login incorrect", physical);
datalink_AuthNotOk(physical->dl);

View File

@ -15,7 +15,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: pap.h,v 1.5.2.5 1998/05/01 19:25:32 brian Exp $
* $Id: pap.h,v 1.6 1998/05/21 21:47:21 brian Exp $
*
* TODO:
*/
@ -29,5 +29,6 @@ struct physical;
struct authinfo;
struct bundle;
extern void pap_Failed(struct physical *);
extern void pap_Input(struct bundle *, struct mbuf *, struct physical *);
extern void pap_SendChallenge(struct authinfo *, int, struct physical *);