commit:32321bfee03406ebbcb13542def0a75b00426ac5
author:Chip Black
committer:Chip Black
date:Fri Jul 25 17:13:16 2014 -0500
parents:948ce5be6ef6bba36edfb544565ca22e316afb0a
Make /status work with GET for non-changing requests
diff --git a/cgi/cgi_blerg.c b/cgi/cgi_blerg.c
line changes: +24/-24
index 95b1809..de325c3
--- a/cgi/cgi_blerg.c
+++ b/cgi/cgi_blerg.c
@@ -390,14 +390,7 @@ int main(int argc, char *argv[]) {
 		if (!check_auth(&ac))
 			exit(0);
 
-		if (strncmp(request_method, "POST", 4) != 0) {
-			respond_405();
-			exit(0);
-		}
-
-		yajl_gen g;
-
-		if (path[7] == 0) {  /* No username */
+		if (strncmp(request_method, "POST", 4) == 0) {
 			const char *clear = cgi_getentrystr("clear");
 
 			if (clear != NULL) {
@@ -409,7 +402,11 @@ int main(int argc, char *argv[]) {
 				}
 				blerg_close(b);
 				respond_JSON_Success();
-			} else {
+			}
+		} else if (strncmp(request_method, "GET", 3) == 0) {
+			yajl_gen g;
+
+			if (path[7] == 0) {  /* No username */
 				g = yajl_gen_alloc(&yajl_c, NULL);
 				yajl_gen_map_open(g);
 
@@ -427,22 +424,25 @@ int main(int argc, char *argv[]) {
 				yajl_gen_map_close(g);
 				respond_yajl(g);
 				yajl_gen_free(g);
-			}
-		} else {  /* with username */
-			g = yajl_gen_alloc(&yajl_c, NULL);
-			yajl_gen_map_open(g);
-
-			yajl_gen_string(g, (unsigned char *)"subscribed", 10);
-			ret = parse_url_info(path + 8, &info);
-			if ((ret & URL_INFO_NAME) == 1) {
-				yajl_gen_bool(g, is_subscribed(ac.name, info.name));
-			} else {
-				yajl_gen_bool(g, 0);
-			}
+			} else {  /* with username */
+				g = yajl_gen_alloc(&yajl_c, NULL);
+				yajl_gen_map_open(g);
+
+				yajl_gen_string(g, (unsigned char *)"subscribed", 10);
+				ret = parse_url_info(path + 8, &info);
+				if ((ret & URL_INFO_NAME) == 1) {
+					yajl_gen_bool(g, is_subscribed(ac.name, info.name));
+				} else {
+					yajl_gen_bool(g, 0);
+				}
 
-			yajl_gen_map_close(g);
-			respond_yajl(g);
-			yajl_gen_free(g);
+				yajl_gen_map_close(g);
+				respond_yajl(g);
+				yajl_gen_free(g);
+			}
+		} else {
+			respond_405();
+			exit(0);
 		}
 	} else if (strncmp(path, "/passwd", 7) == 0) {
 		if (!check_auth(&ac))