# 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
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.
}
-## 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
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
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.