return(NULL);
}
+void replrest(struct hthead *head, char *rest)
+{
+ char *tmp;
+
+ /* Do not free the current rest string yet, so that the new one
+ * can a subpart of the old one. */
+ tmp = head->rest;
+ head->rest = sstrdup(rest);
+ free(tmp);
+}
+
void headpreheader(struct hthead *head, const char *name, const char *val)
{
head->headers = srealloc(head->headers, sizeof(*head->headers) * (head->noheaders + 1));
head->headers[i][1] = sstrdup(val);
}
-int sendreq(int sock, struct hthead *req)
+int sendreq(int sock, struct hthead *req, int fd)
{
int ret, i;
- int pfds[2];
struct charbuf buf;
- if(socketpair(PF_UNIX, SOCK_DGRAM, 0, pfds))
- return(-1);
bufinit(buf);
bufcatstr2(buf, req->method);
bufcatstr2(buf, req->url);
bufcatstr2(buf, req->headers[i][1]);
}
bufcatstr2(buf, "");
- ret = sendfd(sock, pfds[0], buf.b, buf.d);
+ ret = sendfd(sock, fd, buf.b, buf.d);
buffree(buf);
- close(pfds[0]);
- if(ret < 0) {
- close(pfds[1]);
+ if(ret < 0)
return(-1);
- } else {
- return(pfds[1]);
- }
+ else
+ return(0);
}
int recvreq(int sock, struct hthead **reqp)