Commit graph

450 commits

Author SHA1 Message Date
4707f0f4c8 Clean up some NonPosix.h stuff so we can build on Linux.
It appears that SOCK_NONBLOCK is not actually POSIX. According to the
OpenBSD man page, it will be soon, and according to the Linux man page,
it is a Linux extension. However, fcntl() with O_NONBLOCK seems to be
portable across both systems.
2022-10-15 10:08:52 -04:00
bb93cae99a Remove non-standard __FUNCTION__ use.
This cripples the Memory API just a little bit, but I'm sure we'll still
get useful enough information.
2022-10-15 09:34:47 -04:00
0c03c71081 Allow logging to the syslog 2022-10-14 20:55:15 -04:00
31719c2cd6 Tell exactly where the leaked pointer is, so it can be grepped. 2022-10-13 12:46:41 -04:00
65dad27902 Fix some server context memory leaks. 2022-10-13 12:34:17 -04:00
80366fc294 Fix a few more calls to free() 2022-10-13 12:27:24 -04:00
8cb86e8f67 Use new Memory API for all memory allocations. 2022-10-13 12:18:42 -04:00
945acd1adf Format source code 2022-10-13 09:09:26 -04:00
2df0cd9d26 Begin integrating new Memory API 2022-10-13 09:08:05 -04:00
8ae86b18fe Add hook functionality so we can log allocations and deallocations. 2022-10-13 08:50:27 -04:00
2d49ac78b8 Add custom memory management code.
This will be helpful in detecting leaks among other things, and may help
with controlling the cache size as well.
2022-10-12 21:29:05 -04:00
1353fa6429 Remove chroot option; log into the data directory automatically. 2022-10-11 12:00:36 -04:00
5d9b0df0bf Remove the redundant chroot option. This simplifies the config a bit. 2022-10-11 11:38:34 -04:00
414b8d47be Add HashMapFunctionSet() to allow custom hash functions. 2022-10-11 09:27:34 -04:00
744f38784c Finish HashMap documentation 2022-10-10 15:08:19 -04:00
79fc20314f Format source code. 2022-10-10 13:14:52 -04:00
6b57fc45a2 Implement param encoding, clean up warnings in decoding function. 2022-10-03 13:40:29 -04:00
cfcef45c00 Make the log file message more visible. 2022-09-30 13:13:27 -04:00
271cdd8ff0 Abstract the data structure out of the path handling logic. 2022-09-30 12:48:45 -04:00
90166882b0 Remove an unnecessary variable. 2022-09-30 12:48:33 -04:00
45324ce77a Implement /_matrix/client/versions and /.well-known/matrix/client 2022-09-29 13:41:26 -04:00
0ec976d1dd Fix HttpUrlDecode memory issue; write pathParts array 2022-09-28 14:45:45 -04:00
acffd82b48 Move Base64 documentation to man page. 2022-09-27 16:13:59 -04:00
5ecb810a88 Move Array documentation to man page. 2022-09-24 21:35:52 -04:00
b5d538f2ce Cleaned up argument parsing to match what was in the docs 2022-09-24 19:41:39 -04:00
55967c2d75 Start work on routing 2022-09-23 08:06:24 -04:00
3ba80eea64 Remove header.txt 2022-09-23 08:05:45 -04:00
8bd7e27de1 Fix bug in QueuePop() 2022-09-17 15:59:47 -04:00
21894489cb Rename MatrixCreateError() to MatrixErrorCreate() 2022-09-16 11:49:48 -04:00
d7a1f7411d Send M_UNKNOWN on all requests for now. 2022-09-16 11:49:21 -04:00
d0fb926f2a Add error generation logic. 2022-09-16 11:27:34 -04:00
13763eb77b Format code 2022-09-14 17:15:39 -04:00
184866532a Spec: Implement CORS 2022-09-14 17:15:05 -04:00
1d0c48ce32 Add constants 2022-09-14 16:57:19 -04:00
685b7c016d Start work on param parsing. 2022-09-08 21:09:47 -04:00
485941e8a8 Fix bug in JsonEncodeString() where characters get printed to stdout.
Thanks @costava:matrix.org for pointing this one out.
2022-09-06 20:53:30 -04:00
c607ba05a9 Implement URL encoding and decoding. 2022-09-06 20:48:27 -04:00
c0474982a6 Fix compile warnings and errors on Linux 2022-08-28 16:05:11 -04:00
7cc08e67fc Begin Matrix-specific work. 2022-08-28 15:55:48 -04:00
47338fd001 Initialize the server response code 2022-08-28 15:48:58 -04:00
4cd24a6e97 Finally getting into Matrix territory 2022-08-28 15:45:24 -04:00
d7d960b77d Parse HTTP requests and invoke the request handler. 2022-08-28 14:30:15 -04:00
d3e8886b69 Add some functions. 2022-08-26 21:02:53 -04:00
43c46fd45c Fix compile and runtime errors 2022-08-26 20:15:27 -04:00
1dc4261f6f Add Http.c 2022-08-26 11:11:15 -04:00
275d06c127 Begin prototyping the HttpServer API 2022-08-26 11:07:54 -04:00
d8a89c4750 Free server when we're done with it.
This frees up a lot of memory, and closes the server socket so that the
operating system doesn't have to do it, because the operating system may
take a while to actually close the socket.
2022-08-24 19:36:29 -04:00
9378a4d369 Implement basic thread pool with dummy 500 messages. 2022-08-24 19:31:28 -04:00
f950233dbc Add UtilSleepMillis() function. 2022-08-24 19:30:20 -04:00
8657008e94 Format code. 2022-08-24 16:29:00 -04:00
de00c3cb37 Fix fdopen() file mode. 2022-08-24 16:28:50 -04:00
640e127ce5 Fix chroot() logic on non-OpenBSD platforms. 2022-08-24 16:10:34 -04:00
55a49e418f Fix logic error relating to the initial call to QueuePush() 2022-08-24 14:41:42 -04:00
665da9d33e Fix port binding error. 2022-08-24 14:37:32 -04:00
8801afaeb2 Properly initialize and destroy the mutex 2022-08-24 11:25:16 -04:00
be001fb17a Make HttpServer utilize Queue. 2022-08-24 10:06:14 -04:00
ab4afe1587 Add basic Queue implementation. 2022-08-24 09:06:27 -04:00
315589cd1b Accept #29 2022-08-21 12:35:16 -04:00
538412d1c2 Apply #26 2022-08-12 21:30:03 -04:00
30ae6586b2 Accept #28, with modifications. 2022-08-12 19:32:06 -04:00
af03988db7 Poll the socket for data events. 2022-08-11 21:19:52 -04:00
d9c944871a Abstract socket creation and binding behind the HttpServer API. 2022-08-11 20:13:10 -04:00
e94212b080 Bind to socket; HTTP server event thread; signal handling. 2022-08-11 19:40:13 -04:00
9cf2266ece Make TelodendriaConfigParse() actually validate the listenPort.
I want to already have a valid port number by the time we need to bind
to it.
2022-08-11 11:50:35 -04:00
4304a28302 TelodendriaConfigParse() doesn't modify the LogConfig.
Also pledge() and unveil() as soon as possible, to avoid the log file
breaking out.
2022-08-10 21:13:05 -04:00
9ae05e84f2 Implement user validation. 2022-08-10 11:58:39 -04:00
2324d9982f Format code. 2022-08-09 21:05:10 -04:00
d9e355edb9 Relocate free() in HashMap to a sensible location. 2022-08-09 21:02:57 -04:00
560624ba98 Fix memory leak in HashMap 2022-08-09 20:23:25 -04:00
76937a57a4 Check return value of fgets() in Json.c 2022-08-09 20:18:13 -04:00
a24d9b6c29 Fix memory error? 2022-08-09 20:10:45 -04:00
cdd7808642 Prototype the configuration file parser.
Right now there's a nasty memory bug I need to fix. Will have to run this
through valgrind.
2022-08-09 20:05:41 -04:00
9d496c29ac Finish initial draft of JSON parser. 2022-08-09 13:19:14 -04:00
7630294cb7 Basic implementation of JsonTokenSeek() 2022-08-02 21:47:27 -04:00
f48f7c088c Begin prototyping JsonDecode 2022-08-02 16:58:15 -04:00
fa0bd9a7c6 Apply #14 2022-07-29 15:36:21 -04:00
8e8ac04505 Start documenting the headers. 2022-07-29 12:32:52 -04:00
1087069416 Fix some invalid structures. 2022-07-29 12:32:46 -04:00
787a891cb8 JsonValueFree() should take care of strings too. 2022-07-28 22:21:49 -04:00
b3e71c32fd Update license text. 2022-07-28 12:00:52 -04:00
e519621d25 recipe_format now updates source code headers.
Note that it does depend on new source code files *having* a header,
even if it's just a blank block comment.
2022-07-28 11:46:57 -04:00
c991d93444 Add license headers to all source files. 2022-07-28 11:15:04 -04:00
6b8d0f6d5f Add canonical Json implementation. 2022-07-27 17:28:05 -04:00
c143136097 Implement JsonFree(), make string handling UTF-8 aware. 2022-07-27 17:27:34 -04:00
39af3c2194 Add ArraySort() 2022-07-27 15:31:34 -04:00
4c7ec4af56 Add UtilUtf8Encode() and UtilServerTs() 2022-07-27 13:47:20 -04:00
987b1653f1 Add UtilUtf8Encode() and UtilServerTs()
Also updated Json.c to use UtilUtf8Encode() when decoding JSON strings.
2022-07-27 13:47:12 -04:00
90ed321caa Fix typo in Json.c 2022-07-27 11:30:46 -04:00
bf0eb4543e Fix error in Log.c where we were comparing different types. 2022-07-27 09:53:53 -04:00
bc849819d9 Make HashMap and Json conform to C89.
Clang on OpenBSD didn't catch this, but GCC on Linux did.
2022-07-27 09:47:22 -04:00
4e0543b028 Add proper JSON string encoding and decoding. 2022-07-26 13:08:46 -04:00
644733c74e Add a static JsonEncodeString() method.
Right now it just calls fprintf(), but in the future, it will
properly encode a string for JSON output.
2022-07-26 09:10:17 -04:00
8689c95b68 Begin work on Json library. Have a working JsonEncode() 2022-07-25 22:56:14 -04:00
90c4709823 Fix HashMapIterate not resetting the iterator at the right place. 2022-07-25 22:55:22 -04:00
ace2682dec Rework HashMapIterate to be more flexible.
We now get the keys, and we don't have to operate within the confines
of a callback function.
2022-07-25 21:31:09 -04:00
580b036d26 Add key to bucket, make iteratorFunc in HashMapIterate take it. 2022-07-25 16:26:30 -04:00
3437c5db2c Format headers as well.
indent(1) does a weird thing with prototype functions, but it's good
enough for me, as long as it's consistent.
2022-07-25 15:25:06 -04:00
aabb2a0203 Run indent(1) on all C source files. 2022-07-25 15:18:35 -04:00
768430f614 Update link in log header. 2022-07-23 00:50:12 -04:00
d102ba8676 Initial revision 2022-07-22 20:19:12 -04:00