diff options
| -rw-r--r-- | httpd.c | 2 | ||||
| -rw-r--r-- | snac.h | 4 | ||||
| -rw-r--r-- | webfinger.c | 26 |
3 files changed, 17 insertions, 15 deletions
| @@ -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) { |
| @@ -77,7 +77,7 @@ d_char *http_signed_request(snac *snac, char *method, char *url, | |||
| 77 | void httpd(void); | 77 | void httpd(void); |
| 78 | 78 | ||
| 79 | int webfinger_request(char *qs, char **actor, char **user); | 79 | int webfinger_request(char *qs, char **actor, char **user); |
| 80 | void webfinger_get_handler(d_char *req, char *q_path, int *status, | 80 | int 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 | ||
| 83 | int activitypub_request(snac *snac, char *url, d_char **data); | 83 | int 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 | ||
| 101 | void webfinger_get_handler(d_char *req, char *q_path, int *status, | 101 | int 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 | } |