Sfoglia il codice sorgente

Merge remote-tracking branch 'upstream/master'

Paul Wilde 2 anni fa
parent
commit
2410c73d9a
3 ha cambiato i file con 19 aggiunte e 8 eliminazioni
  1. 3 1
      RELEASE_NOTES.md
  2. 1 1
      activitypub.c
  3. 15 6
      mastoapi.c

+ 3 - 1
RELEASE_NOTES.md

@@ -4,10 +4,12 @@
 
 
 Added support for Peertube videos.
 Added support for Peertube videos.
 
 
-Mastodon API: Added support for editing posts, fixed an error related to the edit date of a post.
+Mastodon API: Added support for editing posts, fixed an error related to the edit date of a post, fixed some crashes.
 
 
 Added a handshake emoji next to a user name if it's a mutual relation (follower and followed), because friendship is bliss.
 Added a handshake emoji next to a user name if it's a mutual relation (follower and followed), because friendship is bliss.
 
 
+Tweaked some retry timeout values for better behaviour in larger instances (thanks to me@mysmallinstance.homelinux.org for their help).
+
 ## 2.45
 ## 2.45
 
 
 Fixed a collision in webfinger caching. This may affect federation with some software, so I recommend an upgrade.
 Fixed a collision in webfinger caching. This may affect federation with some software, so I recommend an upgrade.

+ 1 - 1
activitypub.c

@@ -2220,7 +2220,7 @@ void process_queue_item(xs_dict *q_item)
 
 
         /* deliver (if previous error status was a timeout, try now longer) */
         /* deliver (if previous error status was a timeout, try now longer) */
         status = send_to_inbox_raw(keyid, seckey, inbox, msg,
         status = send_to_inbox_raw(keyid, seckey, inbox, msg,
-                    &payload, &p_size, p_status == 599 ? 20 : 3);
+                    &payload, &p_size, p_status == 599 ? 8 : 6);
 
 
         if (payload) {
         if (payload) {
             if (p_size > 64) {
             if (p_size > 64) {

+ 15 - 6
mastoapi.c

@@ -240,8 +240,10 @@ int oauth_post_handler(const xs_dict *req, const char *q_path,
     char *i_ctype = xs_dict_get(req, "content-type");
     char *i_ctype = xs_dict_get(req, "content-type");
     xs *args      = NULL;
     xs *args      = NULL;
 
 
-    if (i_ctype && xs_startswith(i_ctype, "application/json"))
-        args = xs_json_loads(payload);
+    if (i_ctype && xs_startswith(i_ctype, "application/json")) {
+        if (!xs_is_null(payload))
+            args = xs_json_loads(payload);
+    }
     else
     else
     if (i_ctype && xs_startswith(i_ctype, "application/x-www-form-urlencoded") && payload) {
     if (i_ctype && xs_startswith(i_ctype, "application/x-www-form-urlencoded") && payload) {
         xs *upl = xs_url_dec(payload);
         xs *upl = xs_url_dec(payload);
@@ -250,6 +252,9 @@ int oauth_post_handler(const xs_dict *req, const char *q_path,
     else
     else
         args = xs_dup(xs_dict_get(req, "p_vars"));
         args = xs_dup(xs_dict_get(req, "p_vars"));
 
 
+    if (args == NULL)
+        return 400;
+
     xs *cmd = xs_replace_n(q_path, "/oauth", "", 1);
     xs *cmd = xs_replace_n(q_path, "/oauth", "", 1);
 
 
     srv_debug(1, xs_fmt("oauth_post_handler %s", q_path));
     srv_debug(1, xs_fmt("oauth_post_handler %s", q_path));
@@ -1981,8 +1986,10 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
     xs *args      = NULL;
     xs *args      = NULL;
     char *i_ctype = xs_dict_get(req, "content-type");
     char *i_ctype = xs_dict_get(req, "content-type");
 
 
-    if (i_ctype && xs_startswith(i_ctype, "application/json"))
-        args = xs_json_loads(payload);
+    if (i_ctype && xs_startswith(i_ctype, "application/json")) {
+        if (!xs_is_null(payload))
+            args = xs_json_loads(payload);
+    }
     else
     else
         args = xs_dup(xs_dict_get(req, "p_vars"));
         args = xs_dup(xs_dict_get(req, "p_vars"));
 
 
@@ -2504,8 +2511,10 @@ int mastoapi_put_handler(const xs_dict *req, const char *q_path,
     xs *args      = NULL;
     xs *args      = NULL;
     char *i_ctype = xs_dict_get(req, "content-type");
     char *i_ctype = xs_dict_get(req, "content-type");
 
 
-    if (i_ctype && xs_startswith(i_ctype, "application/json"))
-        args = xs_json_loads(payload);
+    if (i_ctype && xs_startswith(i_ctype, "application/json")) {
+        if (!xs_is_null(payload))
+            args = xs_json_loads(payload);
+    }
     else
     else
         args = xs_dup(xs_dict_get(req, "p_vars"));
         args = xs_dup(xs_dict_get(req, "p_vars"));