aboutsummaryrefslogtreecommitdiffstats
path: root/src/libunixonacid/sassclient_cancel_internal.c
blob: a18a5c2c8c2d7f75e53c551d60dea44a4f601749 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* ISC license. */

#include <sys/uio.h>
#include <stdint.h>
#include <errno.h>

#include <skalibs/uint32.h>
#include <skalibs/textclient.h>

#include "sassclient-internal.h"

int sassclient_cancel_internal (sassclient *a, uint32_t id, tain const *deadline, tain *stamp)
{
  struct iovec answer ;
  uint32_t ans ;
  char pack[5] = "-" ;

  uint32_pack_big(pack + 1, id) ;
  if (!textclient_exchange(&a->connection, pack, 5, &answer, deadline, stamp)) return errno ;
  if (answer.iov_len != 4) return EPROTO ;
  uint32_unpack_big((char *)answer.iov_base, &ans) ;
  return ans ;
}