projects
/
yaz-moved-to-github.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
240de66
)
Print only first 8K of HTTP pkgs
author
Adam Dickmeiss
<adam@indexdata.dk>
Wed, 1 May 2013 12:18:57 +0000
(14:18 +0200)
committer
Adam Dickmeiss
<adam@indexdata.dk>
Wed, 1 May 2013 12:18:57 +0000
(14:18 +0200)
and cut off at any zero's - assuming binary content. Also
use odr_write2 in a number of places.
src/http.c
patch
|
blob
|
history
diff --git
a/src/http.c
b/src/http.c
index
634f3c5
..
43e2786
100644
(file)
--- a/
src/http.c
+++ b/
src/http.c
@@
-206,6
+206,27
@@
void z_HTTP_header_add(ODR o, Z_HTTP_Header **hp, const char *n,
(*hp)->next = 0;
}
(*hp)->next = 0;
}
+#if 0
+/* not in use yet */
+static void z_HTTP_header_set(ODR o, Z_HTTP_Header **hp, const char *n,
+ const char *v)
+{
+ while (*hp)
+ {
+ if (!strcmp((*hp)->name, n))
+ {
+ (*hp)->value = odr_strdup(o, v);
+ return;
+ }
+ hp = &(*hp)->next;
+ }
+ *hp = (Z_HTTP_Header *) odr_malloc(o, sizeof(**hp));
+ (*hp)->name = odr_strdup(o, n);
+ (*hp)->value = odr_strdup(o, v);
+ (*hp)->next = 0;
+}
+#endif
+
const char *z_HTTP_header_lookup(const Z_HTTP_Header *hp, const char *n)
{
for (; hp; hp = hp->next)
const char *z_HTTP_header_lookup(const Z_HTTP_Header *hp, const char *n)
{
for (; hp; hp = hp->next)
@@
-453,6
+474,31
@@
int yaz_decode_http_request(ODR o, Z_HTTP_Request **hr_p)
&hr->content_buf, &hr->content_len);
}
&hr->content_buf, &hr->content_len);
}
+static void dump_http_package(ODR o, const char *buf, size_t len)
+{
+ int i;
+ for (i = 0; ; i++)
+ {
+ if (i == len)
+ {
+ odr_printf(o, "%.*s\n", i, buf);
+ break;
+ }
+ else if (i > 8192)
+ {
+ odr_printf(o, "%.*s\n", i, buf);
+ odr_printf(o, "(truncated\n", (long) len);
+ break;
+ }
+ else if (buf[i] == 0)
+ {
+ odr_printf(o, "%.*s\n", i, buf);
+ odr_printf(o, "(binary data)\n", (long) len);
+ break;
+ }
+ }
+}
+
int yaz_encode_http_response(ODR o, Z_HTTP_Response *hr)
{
char sbuf[80];
int yaz_encode_http_response(ODR o, Z_HTTP_Response *hr)
{
char sbuf[80];
@@
-462,7
+508,7
@@
int yaz_encode_http_response(ODR o, Z_HTTP_Response *hr)
sprintf(sbuf, "HTTP/%s %d %s\r\n", hr->version,
hr->code,
z_HTTP_errmsg(hr->code));
sprintf(sbuf, "HTTP/%s %d %s\r\n", hr->version,
hr->code,
z_HTTP_errmsg(hr->code));
- odr_write(o, (unsigned char *) sbuf, strlen(sbuf));
+ odr_write2(o, sbuf, strlen(sbuf));
/* apply Content-Length if not already applied */
if (!z_HTTP_header_lookup(hr->headers,
"Content-Length"))
/* apply Content-Length if not already applied */
if (!z_HTTP_header_lookup(hr->headers,
"Content-Length"))
@@
-470,25
+516,23
@@
int yaz_encode_http_response(ODR o, Z_HTTP_Response *hr)
char lstr[60];
sprintf(lstr, "Content-Length: %d\r\n",
hr->content_len);
char lstr[60];
sprintf(lstr, "Content-Length: %d\r\n",
hr->content_len);
- odr_write(o, (unsigned char *) lstr, strlen(lstr));
+ odr_write2(o, lstr, strlen(lstr));
}
for (h = hr->headers; h; h = h->next)
{
}
for (h = hr->headers; h; h = h->next)
{
- odr_write(o, (unsigned char *) h->name, strlen(h->name));
- odr_write(o, (unsigned char *) ": ", 2);
- odr_write(o, (unsigned char *) h->value, strlen(h->value));
- odr_write(o, (unsigned char *) "\r\n", 2);
+ odr_write2(o, h->name, strlen(h->name));
+ odr_write2(o, ": ", 2);
+ odr_write2(o, h->value, strlen(h->value));
+ odr_write2(o, "\r\n", 2);
}
odr_write(o, (unsigned char *) "\r\n", 2);
if (hr->content_buf)
}
odr_write(o, (unsigned char *) "\r\n", 2);
if (hr->content_buf)
- odr_write(o, (unsigned char *)
- hr->content_buf,
- hr->content_len);
+ odr_write2(o, hr->content_buf, hr->content_len);
if (o->direction == ODR_PRINT)
{
if (o->direction == ODR_PRINT)
{
- odr_printf(o, "-- HTTP response:\n%.*s\n", o->top - top0,
- o->buf + top0);
- odr_printf(o, "-- \n");
+ odr_printf(o, "-- HTTP response:\n");
+ dump_http_package(o, (const char *) o->buf + top0, o->top - top0);
+ odr_printf(o, "--\n");
}
return 1;
}
}
return 1;
}
@@
-498,15
+542,12
@@
int yaz_encode_http_request(ODR o, Z_HTTP_Request *hr)
Z_HTTP_Header *h;
int top0 = o->top;
Z_HTTP_Header *h;
int top0 = o->top;
- odr_write(o, (unsigned char *) hr->method,
- strlen(hr->method));
- odr_write(o, (unsigned char *) " ", 1);
- odr_write(o, (unsigned char *) hr->path,
- strlen(hr->path));
- odr_write(o, (unsigned char *) " HTTP/", 6);
- odr_write(o, (unsigned char *) hr->version,
- strlen(hr->version));
- odr_write(o, (unsigned char *) "\r\n", 2);
+ odr_write2(o, hr->method, strlen(hr->method));
+ odr_write2(o, " ", 1);
+ odr_write2(o, hr->path, strlen(hr->path));
+ odr_write2(o, " HTTP/", 6);
+ odr_write2(o, hr->version, strlen(hr->version));
+ odr_write2(o, "\r\n", 2);
if (hr->content_len &&
!z_HTTP_header_lookup(hr->headers,
"Content-Length"))
if (hr->content_len &&
!z_HTTP_header_lookup(hr->headers,
"Content-Length"))
@@
-514,25
+555,23
@@
int yaz_encode_http_request(ODR o, Z_HTTP_Request *hr)
char lstr[60];
sprintf(lstr, "Content-Length: %d\r\n",
hr->content_len);
char lstr[60];
sprintf(lstr, "Content-Length: %d\r\n",
hr->content_len);
- odr_write(o, (unsigned char *) lstr, strlen(lstr));
+ odr_write2(o, lstr, strlen(lstr));
}
for (h = hr->headers; h; h = h->next)
{
}
for (h = hr->headers; h; h = h->next)
{
- odr_write(o, (unsigned char *) h->name, strlen(h->name));
- odr_write(o, (unsigned char *) ": ", 2);
- odr_write(o, (unsigned char *) h->value, strlen(h->value));
- odr_write(o, (unsigned char *) "\r\n", 2);
+ odr_write2(o, h->name, strlen(h->name));
+ odr_write2(o, ": ", 2);
+ odr_write2(o, h->value, strlen(h->value));
+ odr_write2(o, "\r\n", 2);
}
}
- odr_write(o, (unsigned char *) "\r\n", 2);
+ odr_write2(o, "\r\n", 2);
if (hr->content_buf)
if (hr->content_buf)
- odr_write(o, (unsigned char *)
- hr->content_buf,
- hr->content_len);
+ odr_write2(o, hr->content_buf, hr->content_len);
if (o->direction == ODR_PRINT)
{
if (o->direction == ODR_PRINT)
{
- odr_printf(o, "-- HTTP request:\n%.*s\n", o->top - top0,
- o->buf + top0);
- odr_printf(o, "-- \n");
+ odr_printf(o, "-- HTTP request:\n");
+ dump_http_package(o, (const char *) o->buf + top0, o->top - top0);
+ odr_printf(o, "--\n");
}
return 1;
}
}
return 1;
}