Hello *,
i had a hard time trying to get the civetweb part of radosgw running.
Symptoms are:
curl/wget/s3cmd work fine, all windows clients (CloudBerry and
S3-Browser) refuse to work.
They work fine with the apache<>fastcgi<>radosgw chain.
Looks like they wait for the "\r" in "\r\n" in the response line which
is missing for civetweb:
------------------------
diff --git a/src/rgw/rgw_civetweb.cc b/src/rgw/rgw_civetweb.cc
index a31177f..3396eac 100644
--- a/src/rgw/rgw_civetweb.cc
+++ b/src/rgw/rgw_civetweb.cc
@@ -128,7 +128,7 @@ int RGWMongoose::send_status(const char *status,
const char *status_name)
if (!status_name)
status_name = "";
- snprintf(buf, sizeof(buf), "HTTP/1.1 %s %s\n", status, status_name);
+ snprintf(buf, sizeof(buf), "HTTP/1.1 %s %s\r\n", status, status_name);
bufferlist bl;
bl.append(buf);
@@ -168,5 +168,5 @@ int RGWMongoose::send_content_length(uint64_t len)
has_content_length = true;
char buf[21];
snprintf(buf, sizeof(buf), "%"PRIu64, len);
- return print("Content-Length: %s\n", buf);
+ return print("Content-Length: %s\r\n", buf);
}
------------------------
I couldn't test the patch but let instead haproxy insert the missing
\r and now it
works for those windows clients.
Another thing i noticed is that there's this line:
----------------------------
rgw_main.cc
index 9614b07..115697c 100644
@@ -1124,7 +1124,7 @@ int main(int argc, const char **argv)
string err;
int port;
config->get_val("port", 80, &port);
------------------------
here it warns about my config because "port" is a string. Later, this
is again fetched
from the config but this time as a string and fed to
------------------------------------
class RGWMongooseFrontend : public RGWFrontend {
[...]
conf->get_val("port", "80", &port_str);
const char *options[] = {"listening_ports", port_str.c_str(),
"enable_keep_alive", "yes", "num_threads", thread_pool_buf, NULL};
------------------------------------
I (we?) want this to be a string to be able to bind it to specific ips?
(i.e. "rgw frontends = civetweb port=127.0.0.1:2081")
I dunno if you need the port as an integer in the env object.
Thx & Cheers
Benedikt
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html