summaryrefslogtreecommitdiff
path: root/src/tipideed/options.c
blob: ce25a8168d0b652b364caf40ba10e84246d34143 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* ISC license. */

#include <string.h>

#include <skalibs/buffer.h>
#include <skalibs/strerr.h>
#include <skalibs/tai.h>
#include <skalibs/unix-timed.h>

#include <tipidee/log.h>
#include <tipidee/response.h>
#include "tipideed-internal.h"

int respond_options (tipidee_rql const *rql, uint32_t flags)
{
  tain deadline ;
  tipidee_response_status(buffer_1, rql, 200, "OK") ;
  tipidee_response_header_writeall_g(buffer_1, g.rhdr, g.rhdrn, 0) ;
  buffer_putsnoflush(buffer_1, "Content-Length: 0\r\nAllow: GET, HEAD") ;
  if (flags & 1) buffer_putsnoflush(buffer_1, ", POST") ;
  buffer_putnoflush(buffer_1, "\r\n\r\n", 4) ;
  if (flags & 2) tipidee_log_answer(g.logv, rql, 200, 0) ;
  tain_add_g(&deadline, &g.writetto) ;
  if (!buffer_timed_flush_g(buffer_1, &deadline))
    strerr_diefu1sys(111, "write to stdout") ;
  return 0 ;
}