summaryrefslogtreecommitdiff
path: root/accel-pppd/radius
diff options
context:
space:
mode:
authorKozlov Dmitry <xeb@mail.ru>2013-01-11 16:27:49 +0400
committerKozlov Dmitry <xeb@mail.ru>2013-01-11 16:27:49 +0400
commitf1e3ddf8d12ccdc2d20976e5960985853bed6454 (patch)
tree098149e5ac79b02fba95464717e4c763add79d1e /accel-pppd/radius
parent3a68b66387b2e352d4ffe60c0dd4aeeb2c599fb4 (diff)
parentc223aade3cd0c9ee651902f70da5497aae0f8014 (diff)
downloadaccel-ppp-f1e3ddf8d12ccdc2d20976e5960985853bed6454.tar.gz
accel-ppp-f1e3ddf8d12ccdc2d20976e5960985853bed6454.zip
Merge branch '1.7' of ssh://accel-ppp.git.sourceforge.net/gitroot/accel-ppp/accel-ppp into 1.7
Diffstat (limited to 'accel-pppd/radius')
-rw-r--r--accel-pppd/radius/CMakeLists.txt2
-rw-r--r--accel-pppd/radius/acct.c6
2 files changed, 7 insertions, 1 deletions
diff --git a/accel-pppd/radius/CMakeLists.txt b/accel-pppd/radius/CMakeLists.txt
index 0c1789ef..566f3f9e 100644
--- a/accel-pppd/radius/CMakeLists.txt
+++ b/accel-pppd/radius/CMakeLists.txt
@@ -15,7 +15,7 @@ ADD_DEFINITIONS(-DDICTIONARY="${CMAKE_INSTALL_PREFIX}/share/accel-ppp/radius/dic
ADD_LIBRARY(radius SHARED ${sources})
INSTALL(TARGETS radius
- LIBRARY DESTINATION lib/accel-ppp
+ LIBRARY DESTINATION lib${LIB_SUFFIX}/accel-ppp
)
FILE(GLOB dict "${CMAKE_CURRENT_SOURCE_DIR}/dict/*")
INSTALL(FILES ${dict} DESTINATION share/accel-ppp/radius)
diff --git a/accel-pppd/radius/acct.c b/accel-pppd/radius/acct.c
index 9a832a9c..43e5549a 100644
--- a/accel-pppd/radius/acct.c
+++ b/accel-pppd/radius/acct.c
@@ -202,6 +202,12 @@ static void rad_acct_interim_update(struct triton_timer_t *t)
req_set_RA(rpd->acct_req, rpd->acct_req->serv->secret);
__rad_req_send(rpd->acct_req);
+ /* The above call may set rpd->acct_req to NULL in the following chain of events:
+ 1. __rad_req_send fails (on rad_server_realloc) and calls ppp_terminate;
+ 2. As a result, an EV_PPP_FINISHING event is fired;
+ 3. ppp_finishing calls rad_acct_stop that cleans up the request. */
+ if (!rpd->acct_req)
+ return;
__sync_add_and_fetch(&rpd->acct_req->serv->stat_interim_sent, 1);