tatsuhiro-t/spdylay logo

tatsuhiro-t/spdylay

Free

The experimental SPDY protocol version 2, 3 and 3.1 implementation in C

FreeFree tier
Type
Open Source
Company
tatsuhiro-t (Tatsuhiro Tsujikawa)

About tatsuhiro-t/spdylay

Spdylay is an experimental C library implementing Google's SPDY protocol versions 2, 3, and 3.1. It provides a framing layer without performing any I/O operations, relying on application-provided callback functions. The library does not include event polling, allowing applications to choose their own event handling mechanisms. It is designed to be SSL-library agnostic (example programs require OpenSSL 1.0.1+). The project also provides SPDY client, server, and reverse proxy (shrpx) implementations built on top of the library. Currently, most SPDY/2, SPDY/3, and SPDY/3.1 features are implemented; direct server-push support is not yet available but can be achieved via low-level APIs.

Key Features

Implements SPDY framing layer for versions 2, 3, and 3.1
Callback-based design with no I/O or event polling binding
SSL library agnostic (example programs use OpenSSL 1.0.1+)
Includes example programs: spdycat (SPDY client) and shrpx (reverse proxy)
Supports building for Android via provided scripts
Provides low-level APIs to achieve server-push functionality

Pros & Cons

Pros
  • Lightweight and focused on framing layer, giving developers full control
  • Flexible callback architecture separates protocol handling from I/O
  • Supports multiple SPDY versions (2, 3, 3.1)
  • Comes with working example programs for quick testing
  • Open source under MIT license (from COPYING file)
Cons
  • Experimental status may indicate unstable or incomplete implementation
  • Direct server-push support is missing; requires low-level APIs
  • SPDY protocol is deprecated in favor of HTTP/2, limiting long-term relevance
  • Example programs depend on OpenSSL, which may be heavy for some use cases
  • Not actively maintained (last commit appears historical)

Best For

Building custom SPDY-enabled applications in CCreating SPDY clients, servers, or proxies for experimentation or researchReverse proxy setup with SPDY-to-HTTP conversion using shrpxLearning about SPDY protocol internals through a minimal implementation

FAQ

What SPDY versions does Spdylay support?
Spdylay implements SPDY version 2, 3, and 3.1 framing layers.
Does Spdylay handle I/O operations?
No, Spdylay does not perform any I/O operations; it uses callback functions provided by the application for I/O and event handling.
What are the requirements to build Spdylay?
Building the library requires pkg-config (>=0.20) and zlib (>=1.2.3). Unit tests need CUnit (>=2.1). Example programs additionally require OpenSSL (>=1.0.1), libxml2 (>=2.7.7) for some features, and libevent-openssl (>=2.0.8) for shrpx.
Is server-push supported?
Direct server-push is not yet implemented, but applications can achieve server-push using the provided primitive APIs.