Thu Sep 15 10:46:05 EDT 2005 rsc This is neat. Some suggested changes (and then please resubmit): - Don't indent case statements inside switch or inside ARGBEGIN. - Don't use _ in names. - Use "continue" instead of goto nothingtodo. - Use "for(;;)" instead of "while(1)". - Rename demiseblock to deleteblock or dropblock (demise is not a verb.) - Do not put braces around single statements in if or else. - Rename the program to httpfile. - Don't post a service by default. (srvname = nil) Mount on . by default. - Spell mntpt mtpt. - Why are you going through all the trouble of estrduping port and get? Just use the plain strings. - Your name parsing is really complicated and does the same thing about four times in a row. Can't you just use: get = strchr(host, '/'); if(get) *get++ = 0; else get = "/"; port = strchr(host, ':') if(port) *port++ = 0; else port = usetls ? "https" : "http"; - You should be using cistrncmp instead of strncmp to look for https/http. - Your while loop in findblock should be a for loop. Ditto findreq. - Your takedown function doesn't do anything useful. Srv.end only gets called once the connection has been hung up, so replies to messages won't actually go anywhere. - Alphabetize your options-with-arguments in usage(). Thanks. Russ