README.md revision 5392f7a3
1[![Build Status](https://travis-ci.org/litespeedtech/lsquic.svg?branch=master)](https://travis-ci.org/litespeedtech/lsquic) 2[![Build Status](https://api.cirrus-ci.com/github/litespeedtech/lsquic.svg)](https://cirrus-ci.com/github/litespeedtech/lsquic) 3[![Build status](https://ci.appveyor.com/api/projects/status/kei9649t9leoqicr?svg=true)](https://ci.appveyor.com/project/litespeedtech/lsquic) 4 5LiteSpeed QUIC (LSQUIC) Library README 6============================================= 7 8Description 9----------- 10 11LiteSpeed QUIC (LSQUIC) Library is an open-source implementation of QUIC 12functionality for servers and clients. It is released in the hope to speed 13the adoption of QUIC. Most of the code in this distribution is used in 14our own products: LiteSpeed Web Server, LiteSpeed ADC, and OpenLiteSpeed. 15We think it is free of major problems. Nevertheless, do not hesitate to 16report bugs back to us. Even better, send us fixes and improvements! 17 18Currently supported QUIC versions are Q039, Q043, Q046, and ID-22. Support 19for newer versions will be added soon after they are released. 20 21Documentation 22------------- 23 24The documentation for this module is admittedly sparse. The API is 25documented in include/lsquic.h. If you have doxygen, you can run 26`doxygen dox.cfg` or `make docs`. The example program is 27test/http_client.c: a bare-bones, but working, QUIC client. Have a look 28in EXAMPLES.txt to see how it can be used. 29 30Requirements 31------------ 32 33To build LSQUIC, you need CMake, zlib, and BoringSSL. The example program 34uses libevent to provide the event loop. 35 36Building BoringSSL 37------------------ 38 39BoringSSL is not packaged; you have to build it yourself. The process is 40straightforward. You will need `go` installed. 41 421. Clone BoringSSL by issuing the following command: 43 44``` 45git clone https://boringssl.googlesource.com/boringssl 46cd boringssl 47``` 48 49You may need to install pre-requisites like zlib and libevent. 50 512. Compile the library 52 53``` 54cmake . && make 55``` 56 57Remember where BoringSSL sources are: 58``` 59BORINGSSL=$PWD 60``` 61 62If you want to turn on optimizations, do 63 64``` 65cmake -DCMAKE_BUILD_TYPE=Release . && make 66``` 67 68Building LSQUIC Library 69----------------------- 70 71LSQUIC's `http_client`, `http_server`, and the tests link BoringSSL 72libraries statically. Following previous section, you can build LSQUIC 73as follows: 74 751. Get the source code 76 77``` 78git clone https://github.com/litespeedtech/lsquic.git 79cd lsquic 80git submodule init 81git submodule update 82``` 83 842. Compile the library 85 86 87``` 88# $BORINGSSL is the top-level BoringSSL directory from the previous step 89cmake -DBORINGSSL_DIR=$BORINGSSL . 90make 91``` 92 933. Run tests 94 95``` 96make test 97``` 98 99Building with Docker 100--------- 101The library and http_client example can be built with Docker. 102``` 103docker build -t lsquic . 104``` 105 106Then you can use the http_client example from the command line. 107``` 108docker run -it --rm lsquic http_client -H www.google.com -s 74.125.22.106:443 -p / 109``` 110 111Platforms 112--------- 113 114The library has been tested on the following platforms: 115- Linux 116 - i386 117 - x86_64 118 - ARM (Raspberry Pi 3) 119- FreeBSD 120 - i386 121- MacOS 122 - x86_64 123- Windows (this needs updating for the server part, now broken) 124 - x86_64 125 126Have fun, 127 128LiteSpeed QUIC Team. 129 130Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc 131