httpd.c 1005 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /* snac - A simple, minimalistic ActivityPub instance */
  2. /* copyright (c) 2022 grunfink - MIT license */
  3. #include "xs.h"
  4. #include "xs_io.h"
  5. #include "xs_encdec.h"
  6. #include "xs_json.h"
  7. #include "xs_curl.h"
  8. #include "xs_openssl.h"
  9. #include "xs_socket.h"
  10. #include "xs_httpd.h"
  11. #include "snac.h"
  12. void httpd_connection(int rs)
  13. /* the connection loop */
  14. {
  15. FILE *f;
  16. xs *req;
  17. f = xs_socket_accept(rs);
  18. req = xs_httpd_request(f);
  19. fclose(f);
  20. }
  21. void httpd(void)
  22. /* starts the server */
  23. {
  24. char *address;
  25. int port;
  26. int rs;
  27. address = xs_dict_get(srv_config, "address");
  28. port = xs_number_get(xs_dict_get(srv_config, "port"));
  29. if ((rs = xs_socket_server(address, port)) == -1) {
  30. srv_log(xs_fmt("cannot bind socket to %s:%d", address, port));
  31. return;
  32. }
  33. srv_running = 1;
  34. srv_log(xs_fmt("httpd start %s:%d", address, port));
  35. for (;;) {
  36. httpd_connection(rs);
  37. }
  38. srv_log(xs_fmt("httpd stop %s:%d", address, port));
  39. }