Files
hyper/capi
Sean McArthur 3b26572876 refactor(ffi): check pointer arguments for NULL (#2624)
This changes all the extern C functions in `hyper::ffi` to check passed
pointer arguments for being `NULL` before trying to use them. Before, we
would just assume the programmer had passed a good pointer, which could
result in segmentation faults. Now:

- In debug builds, it will assert they aren't null, and so if they are,
  a message identifying the argument name will be printed and then the
  process will crash.
- In release builds, it will still check for null, but if found, it will
  return early, with a return value indicating failure if the return type
  allows (such as returning NULL, or `HYPERE_INVALID_ARG`).

Closes #2620
2021-08-18 14:15:14 -07:00
..
2021-01-08 10:25:53 -08:00

C API for hyper

This provides auxiliary pieces for a C API to use the hyper library.

Unstable

The C API of hyper is currently unstable, which means it's not part of the semver contract as the rest of the Rust API is.

Because of that, it's only accessible if --cfg hyper_unstable_ffi is passed to rustc when compiling. The easiest way to do that is setting the RUSTFLAGS environment variable.

Building

The C API is part of the Rust library, but isn't compiled by default. Using cargo, it can be compiled with the following command:

RUSTFLAGS="--cfg hyper_unstable_ffi" cargo build --features client,http1,http2,ffi