summaryrefslogtreecommitdiff
path: root/data.c
diff options
context:
space:
mode:
authorGravatar grunfink2025-09-28 14:40:24 +0200
committerGravatar grunfink2025-09-28 14:40:24 +0200
commitcddb2724d56ce8e1d80d4eec3c13702634704022 (patch)
treee3d9099cd43b0370a976155371e91cff68d97b20 /data.c
parentRevert "New function actor_failure()." (diff)
downloadsnac2-cddb2724d56ce8e1d80d4eec3c13702634704022.tar.gz
snac2-cddb2724d56ce8e1d80d4eec3c13702634704022.tar.xz
snac2-cddb2724d56ce8e1d80d4eec3c13702634704022.zip
New function actor_failure() (again, but much better).
Diffstat (limited to '')
-rw-r--r--data.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/data.c b/data.c
index 4a16a82..3b45665 100644
--- a/data.c
+++ b/data.c
@@ -3042,6 +3042,45 @@ xs_list *content_search(snac *user, const char *regex,
3042} 3042}
3043 3043
3044 3044
3045int actor_failure(const char *actor, int op)
3046/* actor failure maintenance */
3047{
3048 int ret = 0;
3049
3050 xs *md5 = xs_md5_hex(actor, strlen(actor));
3051 xs *fn = xs_fmt("%s/failure/%s", srv_basedir, md5);
3052
3053 switch (op) {
3054 case 0: /** check **/
3055 if (mtime(fn))
3056 ret = -1;
3057
3058 break;
3059
3060 case 1: /** register a failure **/
3061 if (mtime(fn) == 0.0) {
3062 FILE *f;
3063
3064 /* only create once, as the date will be used */
3065 if ((f = fopen(fn, "w")) != NULL) {
3066 fprintf(f, "%s\n", actor);
3067 fclose(f);
3068 }
3069 }
3070
3071 break;
3072
3073 case 2: /** clear a failure **/
3074 /* called whenever a message comes from this instance */
3075 unlink(fn);
3076
3077 break;
3078 }
3079
3080 return ret;
3081}
3082
3083
3045int instance_failure(const char *url, int op) 3084int instance_failure(const char *url, int op)
3046/* do some checks and accounting on instance failures */ 3085/* do some checks and accounting on instance failures */
3047{ 3086{