I'm not sure where to report this problem since there's no ghttp or libghttp component in bugzilla.gnome.org and there doesn't appear to be a ghttp mailing list. Can someone here redirect this to the right place? The problem occurs when ghttp is used in a language that uses the comma character as the decimal point. Ghttp sends the http version field as "HTTP/1,1" instead of "HTTP/1.1" and Apache rejects this as a badly formatted request. This happens because the version is being printed as a floating point number instead of as major/minor numbers separated by the '.' character. The attached patch will correct this problem. This is in libghttp-1.0.9. David
Index: http_req.c =================================================================== RCS file: /cvs/libghttp/http_req.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 http_req.c --- http_req.c 2 Jan 2003 09:43:57 -0000 1.1.1.1 +++ http_req.c 2 Jan 2003 09:49:46 -0000 @@ -108,6 +108,8 @@ int l_headers_len = 0; int l_rv = 0; char *l_content = NULL; + int ver_major = 0; + int ver_minor = 0; /* see if we need to jump into the function somewhere */ if (a_conn->sync == HTTP_TRANS_ASYNC) @@ -124,22 +126,25 @@ (strlen(a_req->host) + 20) : 0)); memset(l_request, 0, 30 + strlen(a_req->resource) + (a_conn->proxy_host ? (strlen(a_req->host) + 20) : 0)); + /* split out major/minor version */ + ver_major = (int)a_req->http_ver; + ver_minor = (int)((a_req->http_ver - ver_major) * 10); /* copy it into the buffer */ if (a_conn->proxy_host) { l_request_len = sprintf(l_request, - "%s %s HTTP/%01.1f\r\n", + "%s %s HTTP/%d.%d\r\n", http_req_type_char[a_req->type], a_req->full_uri, - a_req->http_ver); + ver_major, ver_minor); } else { l_request_len = sprintf(l_request, - "%s %s HTTP/%01.1f\r\n", + "%s %s HTTP/%d.%d\r\n", http_req_type_char[a_req->type], a_req->resource, - a_req->http_ver); + ver_major, ver_minor); } /* set the request in the connection buffer */ http_trans_append_data_to_buf(a_conn, l_request, l_request_len);
Attachment:
signature.asc
Description: This is a digitally signed message part