summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--httpd.c2
-rw-r--r--snac.h4
-rw-r--r--webfinger.c26
3 files changed, 17 insertions, 15 deletions
diff --git a/httpd.c b/httpd.c
index bd3e44c..a56ce2a 100644
--- a/httpd.c
+++ b/httpd.c
@@ -126,7 +126,7 @@ void httpd_connection(int rs)
126 server_get_handler(req, q_path, &status, &body, &b_size, &ctype); 126 server_get_handler(req, q_path, &status, &body, &b_size, &ctype);
127 127
128 if (status == 0) 128 if (status == 0)
129 webfinger_get_handler(req, q_path, &status, &body, &b_size, &ctype); 129 status = webfinger_get_handler(req, q_path, &body, &b_size, &ctype);
130 } 130 }
131 else 131 else
132 if (strcmp(method, "POST") == 0) { 132 if (strcmp(method, "POST") == 0) {
diff --git a/snac.h b/snac.h
index b181e61..bb3db8b 100644
--- a/snac.h
+++ b/snac.h
@@ -77,7 +77,7 @@ d_char *http_signed_request(snac *snac, char *method, char *url,
77void httpd(void); 77void httpd(void);
78 78
79int webfinger_request(char *qs, char **actor, char **user); 79int webfinger_request(char *qs, char **actor, char **user);
80void webfinger_get_handler(d_char *req, char *q_path, int *status, 80int webfinger_get_handler(d_char *req, char *q_path,
81 char **body, int *b_size, char **ctype); 81 char **body, int *b_size, char **ctype);
82 82
83int activitypub_request(snac *snac, char *url, d_char **data); 83int activitypub_request(snac *snac, char *url, d_char **data);
diff --git a/webfinger.c b/webfinger.c
index 3fc1eab..e9f0893 100644
--- a/webfinger.c
+++ b/webfinger.c
@@ -58,8 +58,8 @@ int webfinger_request(char *qs, char **actor, char **user)
58 q_vars = xs_dict_append(q_vars, "resource", resource); 58 q_vars = xs_dict_append(q_vars, "resource", resource);
59 req = xs_dict_append(req, "q_vars", q_vars); 59 req = xs_dict_append(req, "q_vars", q_vars);
60 60
61 webfinger_get_handler(req, "/.well-known/webfinger", 61 status = webfinger_get_handler(req, "/.well-known/webfinger",
62 &status, &payload, &p_size, &ctype); 62 &payload, &p_size, &ctype);
63 } 63 }
64 else { 64 else {
65 xs *url = xs_fmt("https:/" "/%s/.well-known/webfinger?resource=%s", host, resource); 65 xs *url = xs_fmt("https:/" "/%s/.well-known/webfinger?resource=%s", host, resource);
@@ -98,20 +98,20 @@ int webfinger_request(char *qs, char **actor, char **user)
98} 98}
99 99
100 100
101void webfinger_get_handler(d_char *req, char *q_path, int *status, 101int webfinger_get_handler(d_char *req, char *q_path,
102 char **body, int *b_size, char **ctype) 102 char **body, int *b_size, char **ctype)
103/* serves webfinger queries */ 103/* serves webfinger queries */
104{ 104{
105 int status;
106
105 if (strcmp(q_path, "/.well-known/webfinger") != 0) 107 if (strcmp(q_path, "/.well-known/webfinger") != 0)
106 return; 108 return 0;
107 109
108 char *q_vars = xs_dict_get(req, "q_vars"); 110 char *q_vars = xs_dict_get(req, "q_vars");
109 char *resource = xs_dict_get(q_vars, "resource"); 111 char *resource = xs_dict_get(q_vars, "resource");
110 112
111 if (resource == NULL) { 113 if (resource == NULL)
112 *status = 400; 114 return 400;
113 return;
114 }
115 115
116 snac snac; 116 snac snac;
117 int found = 0; 117 int found = 0;
@@ -178,10 +178,12 @@ void webfinger_get_handler(d_char *req, char *q_path, int *status,
178 178
179 user_free(&snac); 179 user_free(&snac);
180 180
181 *status = 200; 181 status = 200;
182 *body = j; 182 *body = j;
183 *ctype = "application/json"; 183 *ctype = "application/json";
184 } 184 }
185 else 185 else
186 *status = 404; 186 status = 404;
187
188 return status;
187} 189}