projects
/
l2tpns.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
only poll clifd if successfully bound
[l2tpns.git]
/
l2tpns.c
diff --git
a/l2tpns.c
b/l2tpns.c
index
5c7289c
..
b181ca4
100644
(file)
--- a/
l2tpns.c
+++ b/
l2tpns.c
@@
-4,7
+4,7
@@
// Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
// vim: sw=8 ts=8
// Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
// vim: sw=8 ts=8
-char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.16
0 2006/04/13 11:14:35
bodea Exp $";
+char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.16
2 2006/04/23 23:18:31
bodea Exp $";
#include <arpa/inet.h>
#include <assert.h>
#include <arpa/inet.h>
#include <assert.h>
@@
-2381,12
+2381,12
@@
void processudp(uint8_t *buf, int len, struct sockaddr_in *addr)
disc_reason = "Administrative disconnect";
break;
case 3: // lcp terminate
disc_reason = "Administrative disconnect";
break;
case 3: // lcp terminate
- if (dir !=
1) break; // 1=peer, 2=local
+ if (dir !=
2) break; // 1=peer (LNS), 2=local (LAC)
disc_cause = TERM_USER_REQUEST;
disc_reason = "Normal disconnection";
break;
case 4: // compulsory encryption unavailable
disc_cause = TERM_USER_REQUEST;
disc_reason = "Normal disconnection";
break;
case 4: // compulsory encryption unavailable
- if (dir !=
2
) break; // 1=refused by peer, 2=local
+ if (dir !=
1
) break; // 1=refused by peer, 2=local
disc_cause = TERM_USER_ERROR;
disc_reason = "Compulsory encryption refused";
break;
disc_cause = TERM_USER_ERROR;
disc_reason = "Compulsory encryption refused";
break;
@@
-3255,9
+3255,12
@@
static void mainloop(void)
e.events = EPOLLIN;
i = 0;
e.events = EPOLLIN;
i = 0;
- d[i].type = FD_TYPE_CLI;
- e.data.ptr = &d[i++];
- epoll_ctl(epollfd, EPOLL_CTL_ADD, clifd, &e);
+ if (clifd >= 0)
+ {
+ d[i].type = FD_TYPE_CLI;
+ e.data.ptr = &d[i++];
+ epoll_ctl(epollfd, EPOLL_CTL_ADD, clifd, &e);
+ }
d[i].type = FD_TYPE_CLUSTER;
e.data.ptr = &d[i++];
d[i].type = FD_TYPE_CLUSTER;
e.data.ptr = &d[i++];