commit 551bf92

default  ·  2023-06-18 17:53:33 +0000 UTC
parent 7eb80e9
Added the caller function name to _object_fn_by_md5() and _object_fn().
1 files changed,  +34, -27
M data.c
M data.c
+34, -27
  1@@ -543,10 +543,14 @@ xs_list *index_list_desc(const char *fn, int skip, int show)
  2 
  3 /** objects **/
  4 
  5-static xs_str *_object_fn_by_md5(const char *md5)
  6+static xs_str *_object_fn_by_md5(const char *md5, const char *func)
  7 {
  8+    /* object deleted in an index; fail, but don't bark */
  9+    if (md5[0] == '-')
 10+        return NULL;
 11+
 12     if (!xs_is_hex(md5) || strlen(md5) != 32) {
 13-        srv_log(xs_fmt("_object_fn_by_md5(): bad md5 '%s'", md5));
 14+        srv_log(xs_fmt("_object_fn_by_md5() [from %s()]: bad md5 '%s'", func, md5));
 15         return NULL;
 16     }
 17 
 18@@ -558,17 +562,17 @@ static xs_str *_object_fn_by_md5(const char *md5)
 19 }
 20 
 21 
 22-xs_str *_object_fn(const char *id)
 23+static xs_str *_object_fn(const char *id, const char *func)
 24 {
 25     xs *md5 = xs_md5_hex(id, strlen(id));
 26-    return _object_fn_by_md5(md5);
 27+    return _object_fn_by_md5(md5, func);
 28 }
 29 
 30 
 31 int object_here_by_md5(const char *id)
 32 /* checks if an object is already downloaded */
 33 {
 34-    xs *fn = _object_fn_by_md5(id);
 35+    xs *fn = _object_fn_by_md5(id, "object_here_by_md5");
 36     return fn && mtime(fn) > 0.0;
 37 }
 38 
 39@@ -576,7 +580,7 @@ int object_here_by_md5(const char *id)
 40 int object_here(const char *id)
 41 /* checks if an object is already downloaded */
 42 {
 43-    xs *fn = _object_fn(id);
 44+    xs *fn = _object_fn(id, "object_here");
 45     return mtime(fn) > 0.0;
 46 }
 47 
 48@@ -585,13 +589,15 @@ int object_get_by_md5(const char *md5, xs_dict **obj)
 49 /* returns a stored object, optionally of the requested type */
 50 {
 51     int status = 404;
 52-    xs *fn     = _object_fn_by_md5(md5);
 53+    xs *fn     = NULL;
 54     FILE *f;
 55 
 56-    if (xs_is_null(fn)) {
 57-        srv_log(xs_fmt("object_get_by_md5(): bad md5 '%s'", md5));
 58+    /* objects deleted in indexes start with - */
 59+    if (md5[0] == '-')
 60+        return status;
 61+
 62+    if (xs_is_null((fn = _object_fn_by_md5(md5, "object_get_my_md5"))))
 63         return 500;
 64-    }
 65 
 66     if ((f = fopen(fn, "r")) != NULL) {
 67         flock(fileno(f), LOCK_SH);
 68@@ -623,7 +629,7 @@ int _object_add(const char *id, const xs_dict *obj, int ow)
 69 /* stores an object */
 70 {
 71     int status = 201; /* Created */
 72-    xs *fn     = _object_fn(id);
 73+    xs *fn     = _object_fn(id, "_object_add 1");
 74     FILE *f;
 75 
 76     if (!ow && mtime(fn) > 0.0) {
 77@@ -645,7 +651,7 @@ int _object_add(const char *id, const xs_dict *obj, int ow)
 78 
 79         if (!xs_is_null(in_reply_to) && *in_reply_to) {
 80             /* update the children index of the parent */
 81-            xs *c_idx = _object_fn(in_reply_to);
 82+            xs *c_idx = _object_fn(in_reply_to, "_object_add 2");
 83 
 84             c_idx = xs_replace_i(c_idx, ".json", "_c.idx");
 85 
 86@@ -694,12 +700,10 @@ int object_del_by_md5(const char *md5)
 87 /* deletes an object by its md5 */
 88 {
 89     int status = 404;
 90-    xs *fn     = _object_fn_by_md5(md5);
 91+    xs *fn     = _object_fn_by_md5(md5, "object_del_by_md5");
 92 
 93-    if (xs_is_null(fn)) {
 94-        srv_log(xs_fmt("object_del_by_md5(): bad md5 '%s'", md5));
 95+    if (xs_is_null(fn))
 96         return 500;
 97-    }
 98 
 99     if (unlink(fn) != -1) {
100         status = 200;
101@@ -734,11 +738,11 @@ int object_del(const char *id)
102 int object_del_if_unref(const char *id)
103 /* deletes an object if its n_links < 2 */
104 {
105-    xs *fn = _object_fn(id);
106+    xs *fn = _object_fn(id, "object_del_if_unref");
107     int n_links;
108     int ret = 0;
109 
110-    if (mtime_nl(fn, &n_links) > 0.0 && n_links < 2)
111+    if (fn && mtime_nl(fn, &n_links) > 0.0 && n_links < 2)
112         ret = object_del(id);
113 
114     return ret;
115@@ -747,7 +751,7 @@ int object_del_if_unref(const char *id)
116 
117 double object_ctime_by_md5(const char *md5)
118 {
119-    xs *fn = _object_fn_by_md5(md5);
120+    xs *fn = _object_fn_by_md5(md5, "object_ctime_by_md5");
121     return fn ? f_ctime(fn) : 0.0;
122 }
123 
124@@ -762,7 +766,7 @@ double object_ctime(const char *id)
125 xs_str *_object_index_fn(const char *id, const char *idxsfx)
126 /* returns the filename of an object's index */
127 {
128-    xs_str *fn = _object_fn(id);
129+    xs_str *fn = _object_fn(id, "_object_index_fn");
130     return xs_replace_i(fn, ".json", idxsfx);
131 }
132 
133@@ -808,7 +812,7 @@ xs_list *object_announces(const char *id)
134 int object_parent(const char *md5, char *buf, int size)
135 /* returns the object parent, if any */
136 {
137-    xs *fn = _object_fn_by_md5(md5);
138+    xs *fn = _object_fn_by_md5(md5, "object_parent");
139     if (xs_is_null(fn))
140         return 0;
141 
142@@ -821,7 +825,10 @@ int object_admire(const char *id, const char *actor, int like)
143 /* actor likes or announces this object */
144 {
145     int status = 200;
146-    xs *fn     = _object_fn(id);
147+    xs *fn     = _object_fn(id, "object_admire");
148+
149+    if (xs_is_null(fn))
150+        return 500;
151 
152     fn = xs_replace_i(fn, ".json", like ? "_l.idx" : "_a.idx");
153 
154@@ -839,7 +846,7 @@ int object_unadmire(const char *id, const char *actor, int like)
155 /* actor no longer likes or announces this object */
156 {
157     int status;
158-    xs *fn = _object_fn(id);
159+    xs *fn = _object_fn(id, "object_unadmire");
160 
161     fn = xs_replace_i(fn, ".json", like ? "_l.idx" : "_a.idx");
162 
163@@ -855,7 +862,7 @@ int object_unadmire(const char *id, const char *actor, int like)
164 int _object_user_cache(snac *snac, const char *id, const char *cachedir, int del)
165 /* adds or deletes from a user cache */
166 {
167-    xs *ofn = _object_fn(id);
168+    xs *ofn = _object_fn(id, "_object_user_cache");
169     xs *l   = xs_split(ofn, "/");
170     xs *cfn = xs_fmt("%s/%s/%s", snac->basedir, cachedir, xs_list_get(l, -1));
171     xs *idx = xs_fmt("%s/%s.idx", snac->basedir, cachedir);
172@@ -1194,7 +1201,7 @@ int following_add(snac *snac, const char *actor, const xs_dict *msg)
173         fclose(f);
174 
175         /* get the filename of the actor object */
176-        xs *actor_fn = _object_fn(actor);
177+        xs *actor_fn = _object_fn(actor, "following_add");
178 
179         /* increase its reference count */
180         fn = xs_replace_i(fn, ".json", "_a.json");
181@@ -1292,7 +1299,7 @@ xs_list *following_list(snac *snac)
182 
183                             if (mtime(v2) == 0.0) {
184                                 /* no; add a link to it */
185-                                xs *actor_fn = _object_fn(actor);
186+                                xs *actor_fn = _object_fn(actor, "following_list");
187                                 link(actor_fn, v2);
188                             }
189                         }
190@@ -1443,7 +1450,7 @@ int actor_get(snac *snac1, const char *actor, xs_dict **data)
191     else
192         d = xs_free(d);
193 
194-    xs *fn = _object_fn(actor);
195+    xs *fn = _object_fn(actor, "actor_get");
196     double max_time;
197 
198     /* maximum time for the actor data to be considered stale */