<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<br>
After a great deal of refactoring, digging, confusion, and
generalized wrestling with the surprising number of tentacles that
comprise the mrulist system I can now make a report of sorts:<br>
<br>
<b>Error handling expected by the protocol:</b><br>
<br>
* If there is no overlap between the requested entries and what the
server has available the client is supposed to back up until it can
find an overlap. In the worst case this can mean completely
restarting the request sequence.<br>
<br>
The current code (this was true in the original C version as well)
pretends to do this and will bail if it happens 8 times, but does
not make any changes whatsoever to the request. For all meaningful
purposes this is not implemented in the client.<br>
<br>
* Duplicate entries may be created as data is updated during the
request sequence.<br>
<br>
This is implemented.<br>
<br>
* Packet errors should result in packet size adjustment.<br>
<br>
This is implemented.<br>
<br>
<b>Ways the mrulist handler as currently written can exit its packet
loop:</b><b><br>
</b><br>
* Unspecified errors.<br>
<br>
* Too many (fake) restarts.<br>
<br>
* Bad data in mrulist response.<br>
<br>
* Finding an ending packet, represented by the "now" tag.<br>
<br>
<b>Implications:</b><br>
<br>
* What happens when a packet in the middle of the sequence is
dropped? Who knows! If it is seen as a timeout then the client will
adjust packet size and try again... forever. Or maybe it silently
doesn't notice?<br>
<br>
* What happens when the final packet is dropped? Same as before,
except that never seeing the "now" field means that silent failure
will result in an infinite loop. I think.<br>
<br>
* If the server data changes enough while the request sequence is
running the system can just fail for no good reason because the
error handling for that doesn't exist. Arguably that is when things
are going well; I can imagine some subtle and wacky hijinks when
dumb luck causes it to not fail properly.<br>
<br>
<div class="moz-signature">-- <br>
<i>"In the end; what separates a Man, from a Slave? Money? Power?
No. A Man Chooses, a Slave Obeys."</i> -- Andrew Ryan
<p>
<i>"Utopia cannot precede the Utopian.
It will exist the moment we are fit to occupy it."</i> --
Sophia Lamb
</p>
</div>
</body>
</html>