summaryrefslogtreecommitdiff
path: root/src/usr.sbin/ocspcheck/http.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr.sbin/ocspcheck/http.h')
-rw-r--r--src/usr.sbin/ocspcheck/http.h92
1 files changed, 0 insertions, 92 deletions
diff --git a/src/usr.sbin/ocspcheck/http.h b/src/usr.sbin/ocspcheck/http.h
deleted file mode 100644
index 17541b4363..0000000000
--- a/src/usr.sbin/ocspcheck/http.h
+++ /dev/null
@@ -1,92 +0,0 @@
1/* $Id: http.h,v 1.3 2017/01/25 13:52:53 inoguchi Exp $ */
2/*
3 * Copyright (c) 2016 Kristaps Dzonsons <kristaps@bsd.lv>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17#ifndef HTTP_H
18#define HTTP_H
19
20struct source {
21 int family; /* 4 (PF_INET) or 6 (PF_INET6) */
22 char *ip; /* IPV4 or IPV6 address */
23};
24
25struct http;
26
27/*
28 * Write and read callbacks to allow HTTP and HTTPS.
29 * Both of these return the number of bytes read (or written) or -1 on
30 * failure.
31 * 0 bytes read means that the connection has closed.
32 */
33typedef ssize_t (*writefp)(const void *, size_t, const struct http *);
34typedef ssize_t (*readfp)(char *, size_t, const struct http *);
35
36/*
37 * HTTP/S header pair.
38 * There's also a cooked-up pair, "Status", with the status code.
39 * Both strings are NUL-terminated.
40 */
41struct httphead {
42 const char *key;
43 const char *val;
44};
45
46/*
47 * Grab all information from a transfer.
48 * DO NOT free any parts of this, and editing the parts (e.g., changing
49 * the underlying strings) will persist; so in short, don't.
50 * All of these values will be set upon http_get() success.
51 */
52struct httpget {
53 struct httpxfer *xfer; /* underlying transfer */
54 struct http *http; /* underlying connection */
55 int code; /* return code */
56 struct httphead *head; /* headers */
57 size_t headsz; /* number of headers */
58 char *headpart; /* header buffer */
59 size_t headpartsz; /* size of headpart */
60 char *bodypart; /* body buffer */
61 size_t bodypartsz; /* size of bodypart */
62};
63
64int http_init(void);
65
66/* Convenience functions. */
67struct httpget *http_get(const struct source *, size_t,
68 const char *, short, const char *,
69 const void *, size_t);
70void http_get_free(struct httpget *);
71
72/* Allocation and release. */
73struct http *http_alloc(const struct source *, size_t,
74 const char *, short, const char *);
75void http_free(struct http *);
76struct httpxfer *http_open(const struct http *, const void *, size_t);
77void http_close(struct httpxfer *);
78void http_disconnect(struct http *);
79
80/* Access. */
81char *http_head_read(const struct http *,
82 struct httpxfer *, size_t *);
83struct httphead *http_head_parse(const struct http *,
84 struct httpxfer *, size_t *);
85char *http_body_read(const struct http *,
86 struct httpxfer *, size_t *);
87int http_head_status(const struct http *,
88 struct httphead *, size_t);
89struct httphead *http_head_get(const char *,
90 struct httphead *, size_t);
91
92#endif /* HTTP_H */