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 */