diff options
Diffstat (limited to 'src/libs6/ftrigr_unsubscribe.c')
| -rw-r--r-- | src/libs6/ftrigr_unsubscribe.c | 37 |
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 ; } |
