Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
R
radsecproxy
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Code Review
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
eduroam
radsecproxy
Commits
07238516
Commit
07238516
authored
Apr 26, 2012
by
Linus Nordberg
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add experimental code for dynamic discovery (only if ENABLE_EXPERIMENTAL_DYNDISC).
Patch from Ralf Paffrath <paffrath@dfn.de>.
parent
c6d33673
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
44 additions
and
4 deletions
+44
-4
radsecproxy.c
radsecproxy.c
+41
-4
radsecproxy.h
radsecproxy.h
+3
-0
No files found.
radsecproxy.c
View file @
07238516
...
...
@@ -327,8 +327,13 @@ void freeserver(struct server *server, uint8_t destroymutex) {
if
(
server
->
rbios
)
freebios
(
server
->
rbios
);
free
(
server
->
dynamiclookuparg
);
if
(
server
->
ssl
)
SSL_free
(
server
->
ssl
);
if
(
server
->
ssl
)
{
#if defined ENABLE_EXPERIMENTAL_DYNDISC
if
(
server
->
sock
>=
0
)
close
(
server
->
sock
);
#endif
SSL_free
(
server
->
ssl
);
}
if
(
destroymutex
)
{
pthread_mutex_destroy
(
&
server
->
lock
);
pthread_cond_destroy
(
&
server
->
newrq_cond
);
...
...
@@ -768,7 +773,12 @@ int hasdynamicserver(struct list *srvconfs) {
struct
list_node
*
entry
;
for
(
entry
=
list_first
(
srvconfs
);
entry
;
entry
=
list_next
(
entry
))
if
(((
struct
clsrvconf
*
)
entry
->
data
)
->
dynamiclookupcommand
)
#if defined ENABLE_EXPERIMENTAL_DYNDISC
if
(((
struct
clsrvconf
*
)
entry
->
data
)
->
dynamiclookupcommand
||
((
struct
clsrvconf
*
)
entry
->
data
)
->
servers
->
in_use
)
#else
if
(((
struct
clsrvconf
*
)
entry
->
data
)
->
dynamiclookupcommand
)
#endif
return
1
;
return
0
;
}
...
...
@@ -1764,12 +1774,17 @@ void *clientwr(void *arg) {
dynconffail
=
1
;
server
->
dynstartup
=
0
;
server
->
dynfailing
=
1
;
#if defined ENABLE_EXPERIMENTAL_DYNDISC
pthread_mutex_unlock
(
&
server
->
lock
);
#endif
debug
(
DBG_WARN
,
"%s: dynamicconfig(%s) failed, sleeping %ds"
,
__func__
,
server
->
conf
->
name
,
ZZZ
);
sleep
(
ZZZ
);
goto
errexit
;
}
#if defined ENABLE_EXPERIMENTAL_DYNDISC
pthread_mutex_unlock
(
&
server
->
lock
);
#endif
/* FIXME: Is resolving not always done by compileserverconfig(),
* either as part of static configuration setup or by
* dynamicconfig() above? */
...
...
@@ -1798,6 +1813,9 @@ void *clientwr(void *arg) {
goto
errexit
;
}
server
->
connectionok
=
1
;
#if defined ENABLE_EXPERIMENTAL_DYNDISC
server
->
in_use
=
1
;
#endif
if
(
pthread_create
(
&
clientrdth
,
NULL
,
conf
->
pdef
->
clientconnreader
,
(
void
*
)
server
))
{
debugerrno
(
errno
,
DBG_ERR
,
"clientwr: pthread_create failed"
);
goto
errexit
;
...
...
@@ -1907,6 +1925,9 @@ void *clientwr(void *arg) {
}
}
errexit:
#if defined ENABLE_EXPERIMENTAL_DYNDISC
server
->
in_use
=
0
;
#endif
conf
->
servers
=
NULL
;
if
(
server
->
dynamiclookuparg
)
{
removeserversubrealms
(
realms
,
conf
);
...
...
@@ -2201,12 +2222,28 @@ struct list *createsubrealmservers(struct realm *realm, struct list *srvconfs) {
srvconf
->
servers
->
dynstartup
=
1
;
debug
(
DBG_DBG
,
"%s: new client writer for %s"
,
__func__
,
srvconf
->
servers
->
conf
->
name
);
#if defined ENABLE_EXPERIMENTAL_DYNDISC
pthread_mutex_lock
(
&
srvconf
->
servers
->
lock
);
#endif
if
(
pthread_create
(
&
clientth
,
NULL
,
clientwr
,
(
void
*
)(
srvconf
->
servers
)))
{
#if defined ENABLE_EXPERIMENTAL_DYNDISC
pthread_mutex_unlock
(
&
srvconf
->
servers
->
lock
);
#endif
debugerrno
(
errno
,
DBG_ERR
,
"pthread_create failed"
);
freeserver
(
srvconf
->
servers
,
1
);
srvconf
->
servers
=
NULL
;
#if defined ENABLE_EXPERIMENTAL_DYNDISC
conf
=
srvconf
;
continue
;
#endif
}
else
pthread_detach
(
clientth
);
#if defined ENABLE_EXPERIMENTAL_DYNDISC
/* If clientwr() could not find a NAPTR we have to
* wait for dynfailing=1 what is set in clientwr(). */
pthread_mutex_lock
(
&
srvconf
->
servers
->
lock
);
#endif
}
conf
=
srvconf
;
}
...
...
radsecproxy.h
View file @
07238516
...
...
@@ -164,6 +164,9 @@ struct server {
uint8_t
lostrqs
;
uint8_t
dynstartup
;
uint8_t
dynfailing
;
#if defined ENABLE_EXPERIMENTAL_DYNDISC
uint8_t
in_use
;
#endif
char
*
dynamiclookuparg
;
int
nextid
;
struct
timeval
lastrcv
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment