Commit Graph

68 Commits

Author SHA1 Message Date
Joris Vink 7350131232 Allow listening of tls/notls ports at the same time.
Before kore needed to be built with NOTLS=1 to be able to do non TLS
connections. This has been like this for years.

It is time to allow non TLS listeners without having to rebuild Kore.

This commit changes your configuration format and will break existing
applications their config.

Configurations now get listener {} contexts:

listen default {
	bind 127.0.0.1 8888
}

The above will create a listener on 127.0.0.1, port 8888 that will serve
TLS (still the default).

If you want to turn off TLS on that listener, specify "tls no" in that
context.

Domains now need to be attached to a listener:

Eg:
	domain * {
		attach	default
	}

For the Python API this kills kore.bind(), and kore.bind_unix(). They are
replaced with:

	kore.listen("name", ip=None, port=None, path=None, tls=True).
2019-09-27 12:27:04 +02:00
Joris Vink eab94eda49 move libressl support to minimum 3.3.0. 2019-09-25 15:39:39 +02:00
Joris Vink c8878ebcde mention libcurl support in README 2019-05-01 22:40:27 +02:00
Joris Vink cf2e158773 3.2.0 2018-11-30 21:36:00 +01:00
Joris Vink 91f420d94a people keep subbing to non-mailing-list mails. 2018-11-29 15:52:40 +01:00
Joris Vink 8b1a5add4b update 2018-11-22 13:05:02 +01:00
Joris Vink ae2ea0be72 specify what openssl versions are expected to work. 2018-10-30 08:45:11 +01:00
Joris Vink 05cccef77c toot toot 2018-07-17 15:16:27 +02:00
Joris Vink 207faad3c2 we're not in GH anymore. 2018-07-11 10:04:23 +02:00
Joris Vink 2bf8cce43c even better 2018-07-09 14:17:39 +02:00
Joris Vink 3269fcef80 spacing 2018-07-09 14:17:10 +02:00
Joris Vink bc1206c4fc better README now that we're moving from GH 2018-07-09 09:10:57 +02:00
Joris Vink 46182608c6 most of the existing docs are updated. 2018-06-19 12:03:10 +02:00
Joris Vink 8802ad5f40 mention that 2.x is outdated. 2018-06-09 20:08:39 +02:00
Joris Vink 21b1d5a905 be honest with documentation. 2018-06-09 12:58:23 +02:00
Joris Vink 6665ad9c45 add comment that master should always work. 2018-04-13 16:07:04 +02:00
Joris Vink dd2dff2318 Rework HTTP and worker processes.
The HTTP layer used to make a copy of each incoming header and its
value for a request. Stop doing that and make HTTP headers zero-copy
all across the board.

This change comes with some api function changes, notably the
http_request_header() function which now takes a const char ** rather
than a char ** out pointer.

This commit also constifies several members of http_request, beware.

Additional rework how the worker processes deal with the accept lock.

Before:
	if a worker held the accept lock and it accepted a new connection
	it would release the lock for others and back off for 500ms before
	attempting to grab the lock again.

	This approach worked but under high load this starts becoming obvious.

Now:
	- workers not holding the accept lock and not having any connections
	  will wait less long before returning from kore_platform_event_wait().

	- workers not holding the accept lock will no longer blindly wait
	  an arbitrary amount in kore_platform_event_wait() but will look
	  at how long until the next lock grab is and base their timeout
	  on that.

	- if a worker its next_lock timeout is up and failed to grab the
	  lock it will try again in half the time again.

	- the worker process holding the lock will when releasing the lock
	  double check if it still has space for newer connections, if it does
	  it will keep the lock until it is full. This prevents the lock from
	  bouncing between several non busy worker processes all the time.

Additional fixes:

- Reduce the number of times we check the timeout list, only do it twice
  per second rather then every event tick.
- Fix solo worker count for TLS (we actually hold two processes, not one).
- Make sure we don't accidentally miscalculate the idle time causing new
  connections under heavy load to instantly drop.
- Swap from gettimeofday() to clock_gettime() now that MacOS caught up.
2018-02-14 13:48:49 +01:00
Joris Vink ce9c5a1350 reword 2018-02-05 15:21:28 +00:00
Joris Vink a11190d638 i really don't hang out on irc anymore. 2018-01-16 18:54:45 +01:00
Joris Vink 1465eb2982 slight change in wording 2017-06-28 10:20:14 +02:00
Joris Vink 584ef47c4f update README 2017-05-22 14:36:55 +02:00
Joris Vink aed1a63c38 be more clear about openssl releases. 2017-03-30 09:40:13 +02:00
Joris Vink 529b474991 update README 2017-03-06 14:28:06 +01:00
Joris Vink a43d968f0f add little note on non mixables. 2017-02-07 23:18:05 +01:00
Joris Vink 23d5e9b341 reword 2017-02-06 23:38:21 +01:00
Joris Vink 38df26f59c add first mentions of python support to README. 2017-01-25 22:22:05 +01:00
Joris Vink 7d1d5329c9 Link to latest release. 2016-08-01 15:12:30 +02:00
Joris Vink 176bd204b2 Update README 2016-08-01 15:03:22 +02:00
Joris Vink a16348d524 Remove links to kore.io for releases 2016-08-01 09:59:32 +02:00
Joris Vink c2dd274c40 update with latest 2016-08-01 09:41:12 +02:00
Joris Vink 87a826d89b Better wording. 2016-06-08 14:25:16 +02:00
Joris Vink a261c03435 mention keymgr. 2016-06-08 14:24:51 +02:00
Joris Vink 5533211e80 Real life came in the way of Kore 2.0.0.
Bump release date so I have a bit more time to finish up
before committing to a stable release.
2016-05-02 08:44:32 +02:00
Joris Vink ca2837fbaf Add release date for 2.0.0. 2016-02-27 11:56:55 +01:00
Joris Vink f36ac911d3 Mention NOOPT. 2016-02-01 22:19:16 +01:00
Joris Vink 8282baf63d s/http/https/ 2016-01-27 08:42:08 +01:00
Joris Vink 702ebd1a8d Mention IRC channel on freenode. 2016-01-27 08:41:16 +01:00
Joris Vink 769c78a6e8 Introduce NOHTTP=1 build option.
This basically turns off the HTTP layer for Kore. It does not
compile in anything for HTTP.

This allows Kore to be used as a network application platform as well.
Added an example for this called nohttp.

Other changes that sneaked in while hacking on this:
* Use calloc(), kill pendantic malloc option.
* Killed off SPDY/3.1 support completely, will be superseded by http2

Note that comes with massive changes to a lot of the core API
functions provided by Kore, these might break your application.
2015-11-27 16:22:50 +01:00
Joris Vink 036a4e4d3c NOTLS means no tls, not no openssl. 2015-11-05 09:18:14 +01:00
Geenz 817b916e1f Call it NOTLS instead.
Per @jorisvink's feedback.
2015-05-25 09:42:34 -04:00
Geenz c44de3f629 Rename BENCHMARK to reflect its actual function.
NO_SSL makes a bit more sense, especially for people who proxy their requests via nginx, apache, or similar.
2015-05-25 09:28:13 -04:00
Joris Vink 035fd1c2aa Mention 1.2.3 release 2015-05-21 15:48:53 +02:00
Thordur Bjornsson f2b4efbdc5 travis build badge 2015-05-13 10:02:31 +02:00
Joris Vink 99922d9468 I'm such a slacker. Forgot to mention 1.2.2 2015-04-27 10:51:37 +02:00
Joris Vink aaf00e92f8 add version correctly 2014-12-12 19:48:31 +01:00
Joris Vink bb7cfbf08c Add 1.2.1-release to README 2014-12-12 19:47:51 +01:00
Joris Vink ffe3fdc49d Add websocket mention 2014-11-24 11:11:01 +01:00
Joris Vink 280cd6791e bump README 2014-11-07 17:19:41 +01:00
Joris Vink 0f2a6271b9 Bump readme 2014-11-07 09:14:53 +01:00
Joris Vink d142db2f45 Bump 2014-10-14 16:16:06 +02:00