Thanks!<p>I also forgot to mention about performance. Whether you code * foo or the  easier to comprehend and safer(?) foo[i] then the compiler still does an awesome job optimizing. However, it&#x27;s much easier to assert() if variable i is in range rather than *foo. And it&#x27;s also easier to read a verbose log variable i (usually a &#x27;human-readable&#x27; integer) than to read a verbose log pointer (a &#x27;non-human-readable&#x27; long hex number). At the time we wrote a lot of network daemons for the cloud and performance tested against other freely available code to ensure that we weren&#x27;t just re-inventing the wheel. NGINX seemed to be the next fastest, but our &#x27;dumbed down&#x27; version of C ran about twice as fast as NGINX according to various benchmarks at the time. Looking back, I think that&#x27;s because we performance tested our code from the first lines of production code, and there was no chance for any type of even puppy fat to creep in. Think: &#x27;Look after the cents and the dollars look after themselves&#x27; :-) Plus NGINX also has to handle the generic case, whereas we only needed to handle a specific subset of HTTP &#x2F; HTTPS.