Skip to content

Latest commit

 

History

History
12 lines (9 loc) · 1.45 KB

07-feature-availability.md

File metadata and controls

12 lines (9 loc) · 1.45 KB

7) Feature availability and runtime fallbacks

Build flag When disabled Public-API behavior
HAVE_BAUTH Basic-auth disabled get_user, get_pass return empty string_view; webserver::features().basic_auth == false; create_webserver::basic_auth(true) throws feature_unavailable at webserver construction time (consistent with other feature flags)
HAVE_DAUTH Digest-auth disabled get_digested_user returns empty; check_digest_auth returns a sentinel result; features().digest_auth == false; create_webserver::digest_auth(true) throws feature_unavailable at webserver construction time (consistent with HAVE_BAUTH and HAVE_GNUTLS). Response-side: http_response::unauthorized(digest_challenge) (TASK-062) is always declared regardless of HAVE_DAUTH (PRD-FLG-REQ-001: public declarations must not be conditionally compiled), but on a HAVE_DAUTH-off build the call throws feature_unavailable("digest_auth", "HAVE_DAUTH") instead of constructing a response
HAVE_GNUTLS TLS disabled All get_client_cert_* return empty / -1 / false; features().tls == false; create_webserver::use_ssl(true) throws feature_unavailable
HAVE_WEBSOCKET WebSocket disabled register_ws_resource throws feature_unavailable; features().websocket == false

feature_unavailable derives from std::runtime_error (PRD-FLG-REQ-005). Its what() names both the feature and the build flag (PRD-FLG-REQ-004).