/*
- * $Id: HttpRequest.cc,v 1.8 1998/07/02 17:39:41 wessels Exp $
+ * $Id: HttpRequest.cc,v 1.9 1998/07/17 04:49:59 rousskov Exp $
*
* DEBUG: section 73 HTTP Request
* AUTHOR: Duane Wessels
return httpHeaderParse(&req->header, blk_start, blk_end);
}
-/* swaps out request-line and headers, appends <crlf> terminator */
+/* swaps out request using httpRequestPack */
void
httpRequestSwapOut(const request_t * req, StoreEntry * e)
{
+ Packer p;
assert(req && e);
- /* store request-line */
- storeAppendPrintf(e, "%s %s HTTP/1.0\r\n",
+ packerToStoreInit(&p, e);
+ httpRequestPack(req, &p);
+ packerClean(&p);
+}
+
+/* packs request-line and headers, appends <crlf> terminator */
+void
+httpRequestPack(const request_t * req, Packer *p)
+{
+ assert(req && p);
+ /* pack request-line */
+ packerPrintf(p, "%s %s HTTP/1.0\r\n",
RequestMethodStr[req->method], strBuf(req->urlpath));
- /* store headers */
- {
- Packer p;
- packerToStoreInit(&p, e);
- httpHeaderPackInto(&req->header, &p);
- packerClean(&p);
- }
+ /* headers */
+ httpHeaderPackInto(&req->header, p);
/* trailer */
- storeAppend(e, "\r\n", 2);
+ packerAppend(p, "\r\n", 2);
}
#if UNUSED_CODE
netdbBinaryExchange(entry);
else {
debug(0, 0) ("internalStart: unknown request '%s'\n", upath);
+ debugObj(0,0, request, &httpRequestPack);
err = errorCon(ERR_INVALID_REQ, HTTP_NOT_FOUND);
err->request = requestLink(request);
errorAppendEntry(entry, err);
extern void requestUnlink(request_t *);
extern int httpRequestParseHeader(request_t * req, const char *parse_start);
extern void httpRequestSwapOut(const request_t * req, StoreEntry * e);
+extern void httpRequestPack(const request_t * req, Packer *p);
extern int httpRequestPrefixLen(const request_t * req);
extern int httpRequestHdrAllowed(const HttpHeaderEntry * e, String * strConnection);
extern peer * carpSelectParent(request_t *);
#endif
+/* packs, then prints an object using debug() */
+extern void debugObj(int section, int level, void *obj, void (*packMeth)(void *obj, Packer *p));
/*
* prototypes for system functions missing from system includes
/*
- * $Id: tools.cc,v 1.158 1998/06/08 17:29:21 wessels Exp $
+ * $Id: tools.cc,v 1.159 1998/07/17 04:50:01 rousskov Exp $
*
* DEBUG: section 21 Misc Functions
* AUTHOR: Harvest Derived
snprintf(buf, sizeof(GbBuf), "%.2f TB", value / 1e12);
return buf;
}
+
+void
+debugObj(int section, int level, void *obj, void (*packMeth)(void *obj, Packer *p))
+{
+ MemBuf mb;
+ Packer p;
+ assert(obj);
+ memBufDefInit(&mb);
+ packerToMemInit(&p, &mb);
+ (*packMeth)(obj, &p);
+ debug(section, level) ("%s", mb.buf);
+ packerClean(&p);
+ memBufClean(&mb);
+}