X-Git-Url: http://www.dolda2000.com/gitweb/?a=blobdiff_plain;f=lib%2Freq.h;h=9ae60ab4ef1a568bde61bc47b6d04d346b65767f;hb=e7bdd59acaca36a9a2dea95716abf454e35cf127;hp=b566dd24a1256859b7b0565ccdae1322b9d90c3f;hpb=337333968e3d06cf5f1fa5198eeba3121aee467a;p=ashd.git diff --git a/lib/req.h b/lib/req.h index b566dd2..9ae60ab 100644 --- a/lib/req.h +++ b/lib/req.h @@ -1,16 +1,35 @@ #ifndef _LIB_HTREQ_H #define _LIB_HTREQ_H -struct htreq { - char *method, *url, *ver; - char *restbuf, *rest; +#include + +struct bufio; + +struct hthead { + char *method, *url, *ver, *msg; + int code; + char *rest; char ***headers; int noheaders; }; -struct htreq *mkreq(char *method, char *url, char *ver); -void freereq(struct htreq *req); -void reqpreheader(struct htreq *req, char *name, char *val); -void reqappheader(struct htreq *req, char *name, char *val); +struct hthead *mkreq(char *method, char *url, char *ver); +struct hthead *mkresp(int code, char *msg, char *ver); +void freehthead(struct hthead *head); +char *getheader(struct hthead *head, char *name); +void headpreheader(struct hthead *head, const char *name, const char *val); +void headappheader(struct hthead *head, const char *name, const char *val); +void headrmheader(struct hthead *head, const char *name); +int sendreq2(int sock, struct hthead *req, int fd, int flags); +int sendreq(int sock, struct hthead *req, int fd); +int recvreq(int sock, struct hthead **reqp); +void replrest(struct hthead *head, char *rest); +int parseheaders(struct hthead *head, FILE *in); +int parseheadersb(struct hthead *head, struct bufio *in); +struct hthead *parseresponse(FILE *in); +struct hthead *parseresponseb(struct bufio *in); +int writeresp(FILE *out, struct hthead *resp); +int writerespb(struct bufio *out, struct hthead *resp); +char *unquoteurl(char *in); #endif