This repository is the curl project, consisting of the libcurl library and the curl command-line tool. libcurl is a client-side URL transfer library supporting a wide range of protocols including HTTP, HTTPS, FTP, FTPS, SCP, SFTP, SMTP, POP3, IMAP, LDAP, MQTT, WebSocket, and many more. The curl tool provides a powerful command-line interface for making network requests with extensive options for authentication, SSL/TLS configuration, proxy support, output formatting, and scripting. The architecture is a classic C library with a public API (include/curl/) and a separate CLI tool (src/) that links against the library. Key entry points include curl_easy_perform() for synchronous transfers, curl_multi_perform() for asynchronous multiplexed transfers, and the curl command-line binary. Data flows involve URL parsing, DNS resolution (with support for c-ares, threaded, and DoH), connection establishment via a filter chain (TCP, TLS, HTTP/2, HTTP/3, SOCKS, etc.), protocol-specific handling, and response processing. External dependencies include OpenSSL, GnuTLS, wolfSSL, mbedTLS, Schannel, rustls for TLS; c-ares for async DNS; libssh2/libssh for SSH; nghttp2 for HTTP/2; ngtcp2 and quiche for HTTP/3; and various system libraries. The codebase is exceptionally well-structured, with a modular filter architecture, extensive test coverage (unit, integration, and HTTP test suites), and a strong emphasis on portability across Unix, Windows, macOS, and embedded platforms.
hMailServer is a production-grade, open-source email server for Microsoft Windows, implementing SMTP, POP3, and IMAP protocols with comprehensive anti-spam (SPF, DKIM, DMARC, DNSBL, SURBL, greylisting, SpamAssassin) and anti-virus (ClamAV, ClamWin, custom) capabilities. The server core is written in C++ using Boost.Asio for asynchronous I/O and exposes a COM automation API for administration. It is complemented by a .NET WinForms Administrator GUI, a PHP-based web admin, and a suite of database upgrade scripts supporting MySQL, MSSQL, PostgreSQL, and SQL Server Compact Edition. The architecture follows a layered pattern: business objects (e.g., Account, Domain, Rule) with a generic Collection/Persistence layer, a caching subsystem with TTL-based eviction, and a plugin-style spam test runner. Key data flows include message reception via SMTP, anti-spam scanning, local or external delivery, and optional virus scanning. External dependencies include OpenSSL, Boost, and database client libraries. The codebase is well-structured with reusable patterns but shows signs of age (manual memory management, COM, .NET Framework 4.5, PHP without modern framework).