From: Alan T. DeKok Date: Fri, 25 Aug 2017 18:31:45 +0000 (-0400) Subject: clean up and update todo's X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dcb22af9546fd04288cc014105e75bb94102b6b9;p=thirdparty%2Ffreeradius-server.git clean up and update todo's --- diff --git a/src/modules/rlm_radius/TODO.md b/src/modules/rlm_radius/TODO.md index b703f0e03c0..32bd3075960 100644 --- a/src/modules/rlm_radius/TODO.md +++ b/src/modules/rlm_radius/TODO.md @@ -1,15 +1,30 @@ # rlm_radius -### RADIUS fixes on retransmits - -* don't do `u->packet = talloc_memdup()` if we're going to edit the - packet +## RADIUS fixes * delete rr->id and re-allocate it on retransmit if the packet changes * if the IDs are all allocated, a delete / re-allocate means that it gets the same ID. So we might as well just do that all of the time. -### Limits +* ensure that the retransmission is independent of which connection + the packet is sent on. This means keeping the various timers in 'u' + instead of in 'rr'. i.e. if a connection closes, the packet should + just retransmit on a new connection. + +## connection state + +* CONN_UNUSED isn't used... + +* CONN_STATUS_CHECKS isn't used... it's probably not useful, and + should be deleted. + +* add configurable timers for response_window (see @todo in rlm_radius_udp) + * for synchronous proxying. + +* maybe move Status-Server to fixed-time pings, as recommended in RFC 3539? + * low priority, and probably not useful + +## Limits * limit the maximum number of proxied packets * limit the maximum number of outgoing connections @@ -20,8 +35,18 @@ instead rely on the other end to do some kind of push-back. (HA!) We should limit the number of outgoing connections, tho. -### Status Checks +## Status Checks +* connection negotiation in Status-Server + * some is there (Response-Length) + * add more? Extended ID, etc. + +* enable editing of the contents of status check packets, specifically + for Access-Request, etc. which need a User-Name + +* it's probably better to just have an "update" section than manual + configs? + status_checks { type = Status-Server # mrt, irt, mrc taken from another section, as per Access-Request, etc. @@ -38,9 +63,22 @@ We should limit the number of outgoing connections, tho. } -## miscellaneous +## Core Issues + +things to do in the server core. Tracked here because it's related to +the work in rlm_radius. -* double-check ENABLE_SKIPS in src/lib/io/channel.c +## Cleanup_delay + +* need to double-check cleanup_delay + * it works, but it's likely set too small? + * especially if the client retransmits are 10s? + * or maybe it was the dup detection bug (timestamp) where it didn't detect dups... + +## sequence / ACK in network / worker + +* double-check ENABLE_SKIPS in src/lib/io/channel.c. It's disabled + for now, as it caused problems. So it ALWAYS signals the other side. :( We should move to a "must_signal" approach, as with the network side The worker should suppress signals if it sees that the ACKs from the @@ -63,30 +101,7 @@ SLEEPING N <- W (no packet, queue is 1, inactive) We also need an "must_signal" flag, for if the other end is sleeping... the network always sets it, I guess.. -What else... - -* need to move to queue depth / active flag in channels / network / worker - * the current ACK, and "my_view_of_their_shit" is just too complex - -* need to double-check cleanup_delay - * it works, but it's likely set too small? - * especially if the client retransmits are 10s? - * or maybe it was the dup detection bug (timestamp) where it didn't detect dups... - -* really need to add dup and conflicting packet detection to the core.. - * which lets Status-Server get processed, and synchronous proxying - * add cancel / signal handler in rlm_radius. - -* ensure that the retransmission is independent of which connection -the packet is sent on. This means keeping the various timers in 'u' -instead of in 'rr'. i.e. if a connection closes, the packet should -just retransmit on a new connection. - -* connection negotiation in Status-Server - -* `status_check = auto`, which picks it up from the list of allowed -packet types. We then need to require config for username / password, -for Access-Request, and just username for Accounting-Request. +### Fork * fix fork @@ -101,14 +116,9 @@ for Access-Request, and just username for Accounting-Request. child REQUEST async stuff with listen, protocol handler, etc. * fork also needs to do this sanity check on compile, so that it knows - it can dereference things which exist... - -## connection state - -* CONN_UNUSED isn't used... + it can dereference sections which exist... -* CONN_STATUS_CHECKS isn't used...that needs to be fixed - -* add configurable timers for response_window (see @todo in rlm_radius_udp) +### Add parallel -* \ No newline at end of file +mostly like fork, as each request is run independently. They can +update the parent manually if they so desire.