Commit Graph

61 Commits

Author SHA1 Message Date
Tyler Young f07b3eae43
[WIP] use vcpkg for getopt; build windows shared lib enhancements (#350)
* fix MSVC compiler shared library issues - mostly around 'extern const'

* add vcpkg install getopt to appveyor-windows.yml

show appveyor where to get getopt from vcpkg (non-static lib to avoid LGPL violation)

* add missing else case in lsquic_shared_support.h for windows static lib path

* have cmake spit out it's version

have cmake copy dependent dlls to build dir for tests on windows (getopt.dll)

* copy getopt.dll dep for tests

added commented version that requires >= 3.21 but handles any dll deps

* try caching boringssl dir to reduce CI build time since it's always same commit specified in config file

define VCPKG_ROOT in env since I can't seem to find it by VCPKG_ROOT or VCPKG_INSTALLED_DIR in appveyor's cmake v3.16 + vcpkg

* make windows cache dependent on yml and cmd

* sync up with changes to ls-qpack
2021-12-15 11:38:20 -05:00
Dmitri Tikhonov 99a1ad0f24 Release 2.29.3
- [BUGFIX] Do not send RESET_STREAM if writing to stream is already
  finished.
- perf_client: wait for all ACKs before exiting.
- Improve how generated RESET_STREAM is logged.
- Fix compilation in different combos of adv_tick/conn_stats flags.
- Move qpack warning disablement into src/liblsquic/CMakeLists.txt.
2021-03-03 09:41:42 -05:00
Dmitri Tikhonov b54d1e6309 Make libevent optional; move binaries into bin/ 2021-02-11 17:14:27 -05:00
Dmitri Tikhonov 06b2a2363e Release 2.27.1
- [API] New knob to set outgoing packet batch size.
- Aborted connection now become tickable immediately.
- Abort connection when HTTP/3 frame cannot be opened (can only happen
  when malloc fails).
2021-01-06 09:00:05 -05:00
Dmitri Tikhonov 71eb4000ac Release 2.26.1
- [BUGFIX] Migration corner cases: drop or pad over path challenge
  and response frames when necessary.
- Fix stream unit test.
2020-12-17 14:39:51 -05:00
Dmitri Tikhonov 57fe5a13ac Fix Windows build 2020-11-24 09:09:13 -05:00
Dmitri Tikhonov c0b26eab7c Set -DLSQUIC_CONN_STATS=1 for Windows as well 2020-10-21 10:20:19 -04:00
Dmitri Tikhonov 758aff32b9 Release 2.23.2
- Add QPACK stats collection and experimentation mode, see the new
  es_qpack_experiment setting.
- Log busy connection stats every second using the new "conn-stats"
  log module.
- Log about skipping only once.
- Update HTTP/3 greased frame type formula.
- Use ls-qpack v2.2.1.
2020-10-21 09:05:26 -04:00
Dmitri Tikhonov 00c58df38c Release 2.22.1
- [BUGFIX] Function that checks validity of handshake packets.
2020-10-08 09:28:24 -04:00
Dmitri Tikhonov 464a1af9c4 Fix Windows build 2020-10-07 11:05:18 -04:00
Jonas Vautherin 966c52fc78
Add CMake install target (#171) 2020-10-01 08:45:41 -04:00
Dmitri Tikhonov 2e1429b465 Look for .so BoringSSL libs if LSQUIC_SHARED_LIB option is on 2020-09-28 11:58:02 -04:00
Dmitri Tikhonov b1a7c3f944 Release 2.20.0
- [FEATURE] QUIC and HTTP/3 Internet Draft 30 support.
- [FEATURE] Unreliable Datagram Extension support.
- [FEATURE] Adaptive congestion controller.
- [BUGFIX] Do not send MAX_STREAM_DATA frames on crypto streams.
- [BUGFIX] Fail with CRYPTO_BUFFER_EXCEEDED when too much CRYPTO
  data comes in.
- [BUFFIX] Spin bit is now strictly per path; value is reset on
  DCID change.
- [BUGFIX] Check that max value of max_streams_uni and
  max_streams_bidi TPs is 2^60.
- [BUGFIX] Close IETF mini conn immediately if crypto session
  cannot be initialized.
- Deprecate ID-28 (no browser uses it): it's no longer in the
  default versions list.
- New programs duck_server and duck_client that implement the
  experimental siduck-00 protocol.  They quack!
- IETF crypto streams: don't limit ourselves from sending.
- Command-line programs: turn off QL loss bits if -G is used, as
  Wireshark cannot decrypt QUIC packets when this extension is used.
- Turn all h3 framing unit tests back on.
- Fix malo initialization when compiled in no-pool mode.
2020-09-15 16:42:13 -04:00
Dmitri Tikhonov 2f2f436324 Release 2.19.9
- [FEATURE] Add lsquic_stream_pwritev().  This function allows one to
  reduce the number of system calls required to read a file from disk
  by using lsquic_stream_pwritev() together with preadv(2).
- [BUGFIX] When stream is reset, it is writeable -- let user collect
  the error.
- [BUGFIX] Calculate correct conn flow control if reading ends early.
- [BUGFIX] Remove stream from read and write queues on internal
  shutdown.  This is a regression introduced in 2.19.7.
- [BUGFIX] Swapped arguments in IETF RESET_FRAME generation.
- Turn off mini conn history when compiling with Visual Studio; this
  allows the project to compile on Windows again.
- http_client: Add -3 flag to stop reading from streams early; code
  cleanup.
- Don't use -Werror.
2020-09-08 11:43:03 -04:00
Dmitri Tikhonov fb3e20e0bc Fix Windows support 2020-06-03 00:20:46 -04:00
Dmitri Tikhonov 4d221313f7 Update version to 2.14.8 2020-05-19 16:15:46 -04:00
Rahul Jadhav 81558c3f8c
fix for BORINGSSL_LIB and BORINGSSL_INCLUDE paths with cmake (#134)
* fix for BORINGSSL_LIB and BORINGSSL_INCLUDE paths with cmake

* fix boringssl lib search with different build dir
2020-05-19 15:18:30 -04:00
Dmitri Tikhonov 9a690580c9 Rename test/unittests to tests/ and test/ to bin/ 2020-05-17 12:42:32 -04:00
Rahul Jadhav 21c6983ab5 android cmake support 2020-05-16 20:04:38 +08:00
Dmitri Tikhonov feca77f50d Add experimental support for delayed ACKs extension 2020-02-21 14:26:25 -05:00
Dmitri Tikhonov 83506617f9 Set lshpack include directory in the library's Makefile 2020-02-20 17:00:23 -05:00
Dmitri Tikhonov 0bd320303d Switch to readthedocs.org for hosting documentation
Add API reference.
2020-02-20 16:56:57 -05:00
Dmitri Tikhonov 7d09751dbb Release 2.8.7
- [BUGFIX] Initial packet size check for IETF mini conn applies to
  UDP payload, not QUIC packet.
- Support old and new school loss_bits transport parameter.
- Use Q run length of 64 as suggested in the loss bits Draft.
- Undo square wave count when packet is delayed.
- Code cleanup; minor fixes.
2020-01-09 11:52:25 -05:00
Dmitri Tikhonov 747be414e2 Release 2.8.4
- [HTTP3] Verify number of bytes in incoming DATA frames against
  content-length.
- [HTTP3] Stop issuing streams credits if peer stops opening QPACK
  decoder window.  This addresses a potential attack whereby client
  can cause the server to keep allocating memory.  See Security
  Considerations in the QPACK draft.
- [BUGFIX] Mini conn: don't shorten max packet size for Q050 and later.
- [BUGFIX] Init IETF connection flow controller using correct setting.
- Code cleanup and minor fixes.
2020-01-06 00:47:12 -05:00
initlife d6937ddce0 Add -fsanitize-address to LIBS so that it works with XCode 2019-12-06 08:49:48 -05:00
Dmitri Tikhonov 03e6b668ec Release 2.6.0
- [FEATURE] QUIC and HTTP/3 Internet Draft 24 support
2019-11-07 16:19:03 -05:00
Dmitri Tikhonov a0e1aeeee0 Release 2.5.0
- [API] lsquic_engine_connect() can now be passed QUIC version to use.
- [OPTIMIZATION] Queue opportunistic ACKs if there is data to be sent.
- [BUGFIX] Don't evict streams from priority iterator if there is
  only one queue.
- [OPTIMIZATION, BUGFIX] Several other optimizations and bug fixes.
- Use ls-qpack v0.10.7.
2019-10-31 12:21:14 -04:00
Dmitri Tikhonov df992bcede Release 2.4.9
- [BUGFIX] IETF QUIC server: fix uninitialized variable use.
- [BUGFIX] make sure TLSv1.3 is not disabled in SSL object.
- [BUGFIX] Use issuer name and serial number to cache certs (SKID
  values are not unique).
- [BUGFIX] Always set the idle alarm in IETF connection so that it
  can time out.
2019-10-24 09:46:40 -04:00
Dmitri Tikhonov 0adf085acf Release 2.4.7
- Add echo client and server to the distibution.
- Add MD5 client and server to the distibution.
- Fix http_client: check command-line arguments better, prevent crash.
- Fix IETF conn: can_write_ack() should only care about APP PNS.
- Client: delay stream creation until handshake succeds.
- Reset HTTP stream whose write end is closed prematurely.
- Fix tickable(): mirror behavior of tick() wrt buffered packets.
- Log reason why engine is tickable.
2019-10-15 17:04:14 -04:00
Dmitri Tikhonov 662de5e197 Release 2.4.4
- [API] Add lsquic_alpn2ver() to aid parsing Alt-Svc header.
- [BUGFIX] NULL dereference when H3 frame header would be split.
- [BUGFIX] Do not close fixed-size H3 frame prematurely.
- [BUGFIX] Allow PING frames in IETF mini conn.
- [BUGFIX] Mini conns: don't send any packets after receiving
  CONNECTION_CLOSE.
- [BUGFIX] Client migration: reserve slot for DCID from transport params.
- [BUGFIX] Allow max_early_data_size=0 -- early_data might not be there.
- [BUGFIX] Use an invalid stream number to reset BPT cache (zero is now a
  valid stream number).
- [SPEC] Use FINAL_SIZE_ERROR when FIN mismatch is detected.
- [OPTIMIZATION] Closed connection only gets one chance to send packets.
- [OPTIMIZATION] Flush headers stream before packetizing stream data.
- [OPTIMIZATION] process QPACK encoder STREAM frames immediately.
- Update ls-qpack to v0.10.1.
2019-10-08 08:36:49 -04:00
LiteSpeed Tech 5392f7a3b0
Release 2.2.0: server included, ID-22 supported (#76) 2019-09-11 11:27:58 -04:00
Dmitri Tikhonov 8ca33e0e19 Release 1.19.0
- [FEATURE, API Change] 0-RTT support.  Add function to export 0-RTT
  information; it can be supplied to a subsequent connect() call.
- [FEATURE] Add -0 flag to http_client to exercise 0-RTT support.
- [BUGFIX] Resuscitate the Windows build.
- [BUGFIX] Send HTTP settings (max header list size) if necessary.
- [BUGFIX] Buffered packets can contain ACK frames.
- [BUGFIX] Make packet writeable once all STREAM frames are elided.
- [BUGFIX] Fix potential null dereference when realloc fails.
- cmake: simplify build configuration.
2019-02-04 08:59:11 -05:00
Dmitri Tikhonov b1af35d6c0 Simplify configuration -- use more cmake functions (#62) 2019-02-01 02:12:06 -05:00
Dmitri Tikhonov 2d296031db Resuscitate Windows build (#61) 2019-01-30 15:28:35 -05:00
Dmitri Tikhonov 12693a011b Add MacOS to Travis CI; simplify .travis.yml 2019-01-29 01:55:01 -05:00
Dmitri Tikhonov 229fce07a3 Release 1.17.11
Fix strict aliasing warning in when compiling with optimizations
2019-01-03 11:48:45 -05:00
Dmitri Tikhonov 1e75f9380e Release 1.17.0
- [API Change] Packet out Memory Interface (PMI) update:
  - Split PMI pool return into pmi_release and pmi_return
  - PMI callbacks take peer_ctx and is_ipv6 arguments
- [BUGFIX] Fix use-after-free when certificate is updated
- Silence gcc warning in optimized mode by performing useless
  initialization
- cmake: use the standard variable CMAKE_BUILD_TYPE instead of
  DEVEL_MODE
2018-10-16 09:03:33 -04:00
Dmitri Tikhonov 14e3680d6b Release 1.14.0
- [API Change] Disable packet sending if full batch cannot be sent
  If lsquic_packets_out_f() cannot send the whole batch, disable
  packet sending until lsquic_engine_send_unsent_packets() is called.
- [BUGFIX] Handle case when STREAM frame does not fit.
- [BUGFIX] Always allow incoming STREAM frames to overlap.  Peers
  may send overlapping STREAM frames even if using versions older
  than Q043.
- Custom header set fixes:
  - set "FIN reached" flag when custom header with FIN flag is
    claimed;
  - do not return custom header set for a reset stream.
2018-09-06 14:05:15 -04:00
Zhang Chi 083b593973 [BUGFIX] Fix libevent build error on Darwin 2018-07-17 15:52:42 +08:00
Dmitri Tikhonov ccd741616f Latest changes
- 1.10.1
- [BUGFIX]  process connections after each batch of packets is read
  This avoids a problem of accumulating a very large list of packets
  (possible when speeds are high and socket's receive buffer is large)
  and processing it all at once.
- If glibc is older than 2.17, link with rt.  This is necessary for
  clock_getres(2).
- Add version macros to lsquic.h; remove unnecessary includes.
2018-07-10 11:51:45 -04:00
Dmitri Tikhonov db236e9092 Merge wincompat/test_common_win.c into test_common.c
The macro soup in test_common.c acquired a few more fingernails, but
this is better than maintaining (or, rather, forgetting to maintain)
two versions of the same code.
2018-05-07 16:31:15 -04:00
Dmitri Tikhonov 2a5cd80e91 Fix indentation: this is a better way to address new gcc warnings 2018-05-07 14:30:52 -04:00
Dmitri Tikhonov 4b332c36d1 Latest changes
- Remove comment: MSPC is obsolete (no code changes)
- Prog: use lsquic_str2ver() when processing -o version flag
- Remove unused CTIM and SRBF transport parameters
- Disable QUIC versions Q037 and Q038 by default
- Fix Windows compilation by including compat header file in lshpack.c
- Address warnings produced by newer versions of gcc
- Future-proof: turn off -Werror
2018-05-04 11:53:50 -04:00
Dmitri Tikhonov 802800341c Disable misleading indent warnings in gcc 6+ 2018-05-04 15:32:16 +00:00
Dmitri Tikhonov db8ac9eead Turn off Analyzer if using Travis -- it breaks all tests for some reason 2018-04-23 14:54:51 -04:00
Dmitri Tikhonov 46a5b6690f cmake: use MSVC variable instead of trying to detect 2018-04-19 10:37:58 -04:00
Dmitri Tikhonov 10c492f0b6 Update copyright year; add CONTRIBUTORS.txt 2018-04-02 15:17:56 -04:00
Bob Perper b5d685fccf Additional Windows Updates 2018-04-02 11:38:44 -04:00
Bob Perper 14931b3a86 More Windows updates 2018-03-30 14:53:05 -04:00
Bob Perper ab5c8df273 More Windows Updates 2018-03-30 14:05:18 -04:00