summaryrefslogtreecommitdiff
path: root/httpd.c
blob: d849c98325adc8ae3b6d3722fcc414885c55f824 (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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/* snac - A simple, minimalistic ActivityPub instance */
/* copyright (c) 2022 grunfink - MIT license */

#include "xs.h"
#include "xs_io.h"
#include "xs_encdec.h"
#include "xs_json.h"
#include "xs_curl.h"
#include "xs_openssl.h"
#include "xs_socket.h"
#include "xs_httpd.h"

#include "snac.h"


void httpd_connection(int rs)
/* the connection loop */
{
    FILE *f;
    xs *req;

    f = xs_socket_accept(rs);

    req = xs_httpd_request(f);

    fclose(f);
}


void httpd(void)
/* starts the server */
{
    char *address;
    int port;
    int rs;

    address = xs_dict_get(srv_config, "address");
    port    = xs_number_get(xs_dict_get(srv_config, "port"));

    if ((rs = xs_socket_server(address, port)) == -1) {
        srv_log(xs_fmt("cannot bind socket to %s:%d", address, port));
        return;
    }

    srv_log(xs_fmt("httpd start %s:%d", address, port));

    for (;;) {
        httpd_connection(rs);
    }

    srv_log(xs_fmt("httpd stop %s:%d", address, port));
}