+ Z_GDU *gdu =
+ z_get_HTTP_Request_uri(p->odr_out, uri_lean, 0, proxy_mode);
+ gdu->u.HTTP_Request->method = odr_strdup(p->odr_out, method);
+ yaz_cookies_request(p->cookies, p->odr_out, gdu->u.HTTP_Request);
+ for ( ; user_headers; user_headers = user_headers->next)
+ {
+ /* prefer new Host over user-supplied Host */
+ if (!strcmp(user_headers->name, "Host"))
+ ;
+ /* prefer user-supplied User-Agent over YAZ' own */
+ else if (!strcmp(user_headers->name, "User-Agent"))
+ z_HTTP_header_set(p->odr_out, &gdu->u.HTTP_Request->headers,
+ user_headers->name, user_headers->value);
+ else
+ z_HTTP_header_add(p->odr_out, &gdu->u.HTTP_Request->headers,
+ user_headers->name, user_headers->value);
+ }
+ if (http_user && http_pass)
+ z_HTTP_header_add_basic_auth(p->odr_out,
+ &gdu->u.HTTP_Request->headers,
+ http_user, http_pass);
+ res = 0;
+ if (buf && len)
+ {
+ gdu->u.HTTP_Request->content_buf = (char *) buf;
+ gdu->u.HTTP_Request->content_len = len;
+ }
+ if (!z_GDU(p->odr_out, &gdu, 0, 0))
+ {
+ wrbuf_printf(p->w_error, "Can not encode HTTP request for URL %s",
+ uri);
+ log_warn(p);
+ return 0;
+ }
+ if (cs_connect(conn, add) < 0)