X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fhttp.c;h=005a2e632b2f06f153b4f2416b0c6eb9ca6f961c;hp=62bfa6fe2dda54875f9081f3fd3ad3ab8aa95dc0;hb=991a3cbe7c36c152a5657caaa87ef8d8a5c49ade;hpb=bd0fee845a611e98d52590ade70c5ef414289e24 diff --git a/src/http.c b/src/http.c index 62bfa6f..005a2e6 100644 --- a/src/http.c +++ b/src/http.c @@ -191,7 +191,7 @@ void z_HTTP_header_add_basic_auth(ODR o, Z_HTTP_Header **hp, buf = (char *) odr_malloc(o, (len+1) * 8/6 + 12); strcpy(buf, "Basic "); yaz_base64encode(tmp, &buf[strlen(buf)]); - z_HTTP_header_add(o, hp, "Authorization", buf); + z_HTTP_header_set(o, hp, "Authorization", buf); } @@ -573,21 +573,19 @@ int yaz_encode_http_response(ODR o, Z_HTTP_Response *hr) hr->code, z_HTTP_errmsg(hr->code)); odr_write2(o, sbuf, strlen(sbuf)); - /* apply Content-Length if not already applied */ - if (!z_HTTP_header_lookup(hr->headers, - "Content-Length")) - { - char lstr[60]; - sprintf(lstr, "Content-Length: %d\r\n", - hr->content_len); - odr_write2(o, lstr, strlen(lstr)); - } + /* use content_len for Content-Length */ + sprintf(sbuf, "Content-Length: %d\r\n", hr->content_len); + odr_write2(o, sbuf, strlen(sbuf)); for (h = hr->headers; h; h = h->next) { - 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); + if (yaz_matchstr(h->name, "Content-Length") + && yaz_matchstr(h->name, "Transfer-Encoding")) + { /* skip Content-Length if given. content_len rules */ + 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)