aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs6/ftrigr_unsubscribe.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs6/ftrigr_unsubscribe.c')
-rw-r--r--src/libs6/ftrigr_unsubscribe.c37
1 files changed, 11 insertions, 26 deletions
diff --git a/src/libs6/ftrigr_unsubscribe.c b/src/libs6/ftrigr_unsubscribe.c
index 8a716d5..9aa5595 100644
--- a/src/libs6/ftrigr_unsubscribe.c
+++ b/src/libs6/ftrigr_unsubscribe.c
@@ -1,33 +1,18 @@
/* ISC license. */
#include <errno.h>
-#include <skalibs/uint16.h>
-#include <skalibs/stralloc.h>
-#include <skalibs/gensetdyn.h>
-#include <skalibs/textclient.h>
+
+#include <skalibs/sassclient.h>
+
#include <s6/ftrigr.h>
+#include "ftrigr-internal.h"
-int ftrigr_unsubscribe (ftrigr_t *a, uint16_t i, tain const *deadline, tain *stamp)
+int ftrigr_unsubscribe (ftrigr *a, uint32_t id, tain const *deadline, tain *stamp)
{
- ftrigr1_t *p ;
- char pack[3] = "--U" ;
- if (!i--) return (errno = EINVAL, 0) ;
- p = GENSETDYN_P(ftrigr1_t, &a->data, i) ;
- if (!p) return (errno = EINVAL, 0) ;
- switch (p->state)
- {
- case FR1STATE_WAITACK :
- case FR1STATE_WAITACKDATA :
- {
- char dummy ;
- ftrigr_check(a, i+1, &dummy) ;
- return 1 ;
- }
- default : break ;
- }
- uint16_pack_big(pack, i) ;
- if (!textclient_command(&a->connection, pack, 3, deadline, stamp)) return 0 ;
- stralloc_free(&p->what) ;
- *p = ftrigr1_zero ;
- return gensetdyn_delete(&a->data, i) ;
+ ftrigr_data *p ;
+ if (!sassclient_cancel(&a->client, id, deadline, stamp)) return 0 ;
+ p = genalloc_s(ftrigr_data, &a->data) + id ;
+ p->sa.len = 0 ;
+ p->status = EINVAL ;
+ return 1 ;
}