2018-04-23 19:12:41 +00:00
|
|
|
[![Build Status](https://travis-ci.org/litespeedtech/lsquic-client.svg?branch=master)](https://travis-ci.org/litespeedtech/lsquic-client)
|
2019-01-29 04:37:37 +00:00
|
|
|
[![Build Status](https://api.cirrus-ci.com/github/litespeedtech/lsquic-client.svg)](https://cirrus-ci.com/github/litespeedtech/lsquic-client)
|
2019-01-31 03:29:55 +00:00
|
|
|
[![Build status](https://ci.appveyor.com/api/projects/status/kei9649t9leoqicr?svg=true)](https://ci.appveyor.com/project/litespeedtech/lsquic-client)
|
2018-04-23 18:49:50 +00:00
|
|
|
|
2017-09-22 21:00:03 +00:00
|
|
|
LiteSpeed QUIC (LSQUIC) Client Library README
|
|
|
|
=============================================
|
|
|
|
|
|
|
|
Description
|
|
|
|
-----------
|
|
|
|
|
|
|
|
LiteSpeed QUIC (LSQUIC) Client Library is an open-source implementation
|
|
|
|
of QUIC functionality for clients. It is released in the hope to speed
|
|
|
|
the adoption of QUIC. Most of the code in this distribution is used in
|
|
|
|
our own products: LiteSpeed Web Server and ADC. We think it is free of
|
|
|
|
major problems. Nevertheless, do not hesitate to report bugs back to us.
|
|
|
|
Even better, send us fixes and improvements!
|
|
|
|
|
2018-08-15 19:06:31 +00:00
|
|
|
Currently supported QUIC versions are Q035, Q039, Q043, and Q044. Support
|
|
|
|
for newer versions will be added soon after they are released. The
|
2019-01-23 15:01:00 +00:00
|
|
|
version(s) specified by IETF QUIC WG are being developed on
|
|
|
|
[one or more branches](https://github.com/litespeedtech/lsquic-client/branches).
|
|
|
|
When deemed stable, the IETF QUIC support will be added to the master branch.
|
2017-09-22 21:00:03 +00:00
|
|
|
|
|
|
|
Documentation
|
|
|
|
-------------
|
|
|
|
|
|
|
|
The documentation for this module is admittedly sparse. The API is
|
|
|
|
documented in include/lsquic.h. If you have doxygen, you can run
|
2017-09-26 15:26:05 +00:00
|
|
|
`doxygen dox.cfg` or `make docs`. The example program is
|
2017-09-22 21:00:03 +00:00
|
|
|
test/http_client.c: a bare-bones, but working, QUIC client. Have a look
|
|
|
|
in EXAMPLES.txt to see how it can be used.
|
|
|
|
|
2017-09-26 15:26:05 +00:00
|
|
|
Requirements
|
|
|
|
------------
|
2017-09-22 21:00:03 +00:00
|
|
|
|
2017-09-26 15:26:05 +00:00
|
|
|
To build LSQUIC, you need CMake, zlib, and BoringSSL. The example program
|
|
|
|
uses libevent to provide the event loop.
|
2017-09-22 21:00:03 +00:00
|
|
|
|
2017-09-26 15:26:05 +00:00
|
|
|
Building BoringSSL
|
|
|
|
------------------
|
|
|
|
|
|
|
|
BoringSSL is not packaged; you have to build it yourself. The process is
|
|
|
|
straightforward. You will need `go` installed.
|
|
|
|
|
|
|
|
1. Clone BoringSSL by issuing the following command:
|
|
|
|
|
|
|
|
```
|
|
|
|
git clone https://boringssl.googlesource.com/boringssl
|
|
|
|
cd boringssl
|
|
|
|
```
|
|
|
|
|
|
|
|
2. Check out stable branch:
|
|
|
|
|
|
|
|
```
|
2017-09-29 15:18:32 +00:00
|
|
|
git checkout chromium-stable
|
2017-09-26 15:26:05 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
3. Compile the library
|
|
|
|
|
|
|
|
```
|
|
|
|
cmake . && make
|
|
|
|
```
|
|
|
|
|
2019-02-01 07:24:29 +00:00
|
|
|
Remember where BoringSSL sources are:
|
2017-09-26 15:26:05 +00:00
|
|
|
```
|
2019-02-01 07:24:29 +00:00
|
|
|
BORINGSSL=$PWD
|
2017-09-26 15:26:05 +00:00
|
|
|
```
|
|
|
|
|
2019-02-01 07:24:29 +00:00
|
|
|
If you want to turn on optimizations, do
|
2017-09-26 15:26:05 +00:00
|
|
|
|
|
|
|
```
|
2019-02-01 07:24:29 +00:00
|
|
|
cmake -DCMAKE_BUILD_TYPE=Release . && make
|
2017-09-26 15:26:05 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
Building LSQUIC Client Library
|
|
|
|
------------------------------
|
|
|
|
|
|
|
|
LSQUIC's `http_client` and the tests link BoringSSL libraries statically.
|
|
|
|
Following previous section, you can build LSQUIC as follows:
|
|
|
|
|
2017-09-29 15:18:32 +00:00
|
|
|
1. Get the source code
|
|
|
|
|
|
|
|
```
|
|
|
|
git clone https://github.com/litespeedtech/lsquic-client.git
|
|
|
|
cd lsquic-client
|
|
|
|
```
|
|
|
|
|
|
|
|
2. Compile the library
|
|
|
|
|
|
|
|
|
2017-09-26 15:26:05 +00:00
|
|
|
```
|
2019-02-01 07:24:29 +00:00
|
|
|
# $BORINGSSL is the top-level BoringSSL directory from the previous step
|
|
|
|
cmake -DBORINGSSL_DIR=$BORINGSSL .
|
2017-09-26 15:26:05 +00:00
|
|
|
make
|
|
|
|
```
|
|
|
|
|
2017-09-29 15:18:32 +00:00
|
|
|
3. Run tests
|
2017-09-26 15:26:05 +00:00
|
|
|
|
|
|
|
```
|
|
|
|
make test
|
|
|
|
```
|
|
|
|
|
2017-10-03 19:37:20 +00:00
|
|
|
Building with Docker
|
|
|
|
---------
|
|
|
|
The library and http_client example can be built with Docker.
|
|
|
|
```
|
|
|
|
docker build -t lsquic-client .
|
|
|
|
```
|
|
|
|
|
|
|
|
Then you can use the http_client example from the command line.
|
|
|
|
```
|
|
|
|
docker run -it --rm lsquic-client http_client -H www.google.com -s 74.125.22.106:443 -p /
|
|
|
|
```
|
|
|
|
|
2017-09-26 15:26:05 +00:00
|
|
|
Platforms
|
|
|
|
---------
|
|
|
|
|
|
|
|
The client library has been tested on the following platforms:
|
|
|
|
- Linux
|
2018-05-04 20:24:56 +00:00
|
|
|
- i386
|
2017-09-26 15:26:05 +00:00
|
|
|
- x86_64
|
|
|
|
- ARM (Raspberry Pi 3)
|
|
|
|
- FreeBSD
|
|
|
|
- i386
|
2018-04-02 19:16:01 +00:00
|
|
|
- Windows
|
|
|
|
- x86_64
|
2017-09-26 15:26:05 +00:00
|
|
|
- MacOS
|
|
|
|
- x86_64
|
2017-09-22 21:00:03 +00:00
|
|
|
|
|
|
|
Have fun,
|
|
|
|
|
|
|
|
LiteSpeed QUIC Team.
|
|
|
|
|
2018-04-20 19:19:44 +00:00
|
|
|
Copyright (c) 2017 - 2018 LiteSpeed Technologies Inc
|