+void headrmheader(struct hthead *head, const char *name)
+{
+ int i;
+
+ for(i = 0; i < head->noheaders; i++) {
+ if(!strcasecmp(head->headers[i][0], name)) {
+ free(head->headers[i][0]);
+ free(head->headers[i][1]);
+ free(head->headers[i]);
+ memmove(head->headers + i, head->headers + i + 1, sizeof(head->headers) * (--head->noheaders - i));
+ return;
+ }
+ }
+}
+
+int writeresp(FILE *out, struct hthead *resp)
+{
+ int i;
+
+ if(fprintf(out, "%s %i %s\r\n", resp->ver, resp->code, resp->msg) < 0)
+ return(-1);
+ for(i = 0; i < resp->noheaders; i++) {
+ if(fprintf(out, "%s: %s\r\n", resp->headers[i][0], resp->headers[i][1]) < 0)
+ return(-1);
+ }
+ return(0);
+}
+
+int sendreq(int sock, struct hthead *req, int fd)