Commit Diff


commit - 8857131d3f62c08a0b3d450582560322c36ea219
commit + b4f7fe4f4d4f2a1b47513ee6905928e6d8be1e7b
blob - 107898868bf05ee176299f6fba32f140e52e0ab9
blob + 0715706983dee0bcf3a83eafd36fb16bf7bf8197
--- proxy.c
+++ proxy.c
@@ -688,6 +688,24 @@ proxy_read(struct bufferevent *bev, void *d)
 	case '2':
 		/* handled below */
 		break;
+	case '3':
+		/* XXX: do proper parsing */
+		if (hdr[3] == '/' || strstr(&hdr[3], "//") == NULL) {
+			char *url;
+
+			if (asprintf(&url, "%s%s", clt->clt_script_name,
+			    &hdr[3]) == -1)
+				goto err;
+
+			if (proxy_start_reply(clt, 302, url)) {
+				free(url);
+				goto err;
+			}
+			free(url);
+			fcgi_end_request(clt, 0);
+			goto err;
+		}
+		/* fallback */
 	default:
 		if (proxy_start_reply(clt, 501, "text/html") == -1)
 			goto err;