Make /status work with GET for non-changing requests
[blerg.git] / cgi / cgi_blerg.c
index 95b1809..de325c3 100644 (file)
@@ -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))