summaryrefslogtreecommitdiff
path: root/accel-pppd/ppp
diff options
context:
space:
mode:
authorDmitry Kozlov <xeb@mail.ru>2016-04-17 14:29:36 +0300
committerDmitry Kozlov <xeb@mail.ru>2016-04-17 14:29:36 +0300
commiteb3b85388944b4e15b6db2db99d136f538384c4e (patch)
tree64a7fa8cc1d27059bf411198259939745e4bf34a /accel-pppd/ppp
parentb80e64a320b22c0e966ec1e42bda4929d5a748ec (diff)
downloadaccel-ppp-xebd-eb3b85388944b4e15b6db2db99d136f538384c4e.tar.gz
accel-ppp-xebd-eb3b85388944b4e15b6db2db99d136f538384c4e.zip
preparation for DPDK intergation (part 7)
Diffstat (limited to 'accel-pppd/ppp')
-rw-r--r--accel-pppd/ppp/ppp.c34
1 files changed, 10 insertions, 24 deletions
diff --git a/accel-pppd/ppp/ppp.c b/accel-pppd/ppp/ppp.c
index ab67aa2..f05b47b 100644
--- a/accel-pppd/ppp/ppp.c
+++ b/accel-pppd/ppp/ppp.c
@@ -93,11 +93,8 @@ int __export establish_ppp(struct ppp_t *ppp)
}
fcntl(ppp->chan_fd, F_SETFD, fcntl(ppp->chan_fd, F_GETFD) | FD_CLOEXEC);
- if (fcntl(ppp->chan_fd, F_SETFL, O_NONBLOCK)) {
- log_ppp_error("ppp: cannot set nonblocking mode: %s\n",
- strerror(errno));
- goto exit_close_chan;
- }
+
+ net->set_nonblocking(ppp->chan_fd, 1);
if (net->ppp_ioctl(ppp->chan_fd, PPPIOCATTCHAN, &ppp->chan_idx) < 0) {
log_ppp_error("ioctl(PPPIOCATTCHAN): %s\n", strerror(errno));
@@ -357,18 +354,14 @@ static int ppp_chan_read(struct triton_md_handler_t *h)
cont:
ppp->buf_size = net->read(h->fd, ppp->buf, PPP_BUF_SIZE);
if (ppp->buf_size < 0) {
- if (errno != EAGAIN)
+ if (errno != EAGAIN) {
log_ppp_error("ppp_chan_read: %s\n", strerror(errno));
+ ap_session_terminate(&ppp->ses, TERM_NAS_ERROR, 1);
+ return 1;
+ }
break;
}
- //printf("ppp_chan_read: ");
- //print_buf(ppp->buf,ppp->buf_size);
- if (ppp->buf_size == 0) {
- ap_session_terminate(&ppp->ses, TERM_NAS_ERROR, 1);
- return 1;
- }
-
if (ppp->buf_size < 2) {
log_ppp_error("ppp_chan_read: short read %i\n", ppp->buf_size);
continue;
@@ -409,21 +402,14 @@ static int ppp_unit_read(struct triton_md_handler_t *h)
cont:
ppp->buf_size = net->read(h->fd, ppp->buf, PPP_BUF_SIZE);
if (ppp->buf_size < 0) {
- if (errno != EAGAIN)
+ if (errno != EAGAIN) {
log_ppp_error("ppp_unit_read: %s\n",strerror(errno));
+ ap_session_terminate(&ppp->ses, TERM_NAS_ERROR, 1);
+ return 1;
+ }
break;
}
- //printf("ppp_unit_read: %i\n", ppp->buf_size);
- if (ppp->buf_size == 0)
- return 0;
- //print_buf(ppp->buf,ppp->buf_size);
-
- /*if (ppp->buf_size == 0) {
- ap_session_terminate(ppp, TERM_NAS_ERROR, 1);
- return 1;
- }*/
-
if (ppp->buf_size < 2) {
log_ppp_error("ppp_unit_read: short read %i\n", ppp->buf_size);
continue;