{"id":25349853,"url":"https://github.com/metaswitch/libmicrohttpd","last_synced_at":"2025-10-29T19:31:01.673Z","repository":{"id":141926398,"uuid":"20438014","full_name":"Metaswitch/libmicrohttpd","owner":"Metaswitch","description":"GNU libmicrohttpd","archived":false,"fork":false,"pushed_at":"2015-07-02T10:38:56.000Z","size":1736,"stargazers_count":6,"open_issues_count":0,"forks_count":7,"subscribers_count":25,"default_branch":"master","last_synced_at":"2024-04-16T03:43:35.555Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Metaswitch.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-06-03T10:04:28.000Z","updated_at":"2023-04-24T14:06:35.000Z","dependencies_parsed_at":"2023-03-13T00:00:18.855Z","dependency_job_id":null,"html_url":"https://github.com/Metaswitch/libmicrohttpd","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metaswitch%2Flibmicrohttpd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metaswitch%2Flibmicrohttpd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metaswitch%2Flibmicrohttpd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metaswitch%2Flibmicrohttpd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Metaswitch","download_url":"https://codeload.github.com/Metaswitch/libmicrohttpd/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238878934,"owners_count":19545855,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-14T16:58:24.704Z","updated_at":"2025-10-29T19:31:01.082Z","avatar_url":"https://github.com/Metaswitch.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"libmicrohttpd - see http://www.gnu.org/software/libmicrohttpd/\n\n+------------------+\n| METASWITCH NOTES |\n+------------------+\n\nThis repo contains the libmicrohttpd source, plus some local changes, build scripts etc.\n\nWe have 2 branches:\n- master (containing Metaswitch-changes)\n- upstream (mirror of libmicrohttpd source)\n\nTo update to a new version of libmicrohttpd:\n- git checkout upstream\n- obtain the latest libmicrohttpd-\u003cversion\u003e.tar.gz (don't copy the SVN repo - that's missing install scripts etc)\n- replace contents of repo with contents of the tar\n- git checkout master\n- git merge upstream\n\n\n+---------------------+\n| LIBMICROHTTPD NOTES |\n+---------------------+\n\nAbout\n=====\n\nGNU libmicrohttpd is a GNU package offering a C library that provides\na compact API and implementation of an HTTP 1.1 web server (HTTP 1.0\nis also supported).  GNU libmicrohttpd only implements the HTTP 1.1\nprotocol.  The main application must still provide the application\nlogic to generate the content.\n\nAdditionally, a second, still very experimental library is provided\nfor SPDY (the base for HTTP 2.0) support.  libmicrospdy provides a\ncompact API and implementation of SPDY server. libmicrospdy currently\nonly implements partially version 3 of SPDY.\n\n\nInstallation\n============\n\nIf you are using Subversion, run \"autoreconf -fi\" to create configure.\n\nIn order to run the testcases, you need a recent version of libcurl.\nlibcurl is not required if you just want to install the library.\n\nEspecially for development, do use the MHD_USE_DEBUG option to get\nerror messages.\n\n\nRequirements for libmicrospdy\n=============================\n\nThe following packages are needed to build libmicrospdy:\n\n* zlib \n* OpenSSL \u003e= 1.0.1\n\nTo run the test cases, involving requests, version of Spdylay, supporting\nSPDY v3, is required. Spdylay is still under development and can be\nfound here:\n\nhttp://spdylay.sourceforge.net/\n\n\nConfigure options\n=================\n\n\nIf you are concerned about space, you should set \"CFLAGS\" to \"-Os\n-fomit-frame-pointer\" to have gcc generate tight code.\n\nYou can use the following options to disable certain MHD features:\n\n--disable-https: no HTTPS / TLS / SSL support (significant reduction)\n--disable-messages: no error messages (they take space!)\n--disable-postprocessor: no MHD_PostProcessor API\n--disable-dauth: no digest authentication API\n--disable-epoll: no support for epoll, even on Linux\n\nThe resulting binary should be about 30-40k depending on the platform.\n\n\nPortability\n===========\n\nThe latest version of libmicrohttpd will try to avoid SIGPIPE on its\nsockets.  This should work on OS X, Linux and recent BSD systems (at\nleast).  On other systems that may trigger a SIGPIPE on send/recv, the\nmain application should install a signal handler to handle SIGPIPE.\n\nlibmicrohttpd should work well on GNU/Linux, BSD, OS X, W32 and z/OS.\nNote that HTTPS is not supported on z/OS (yet).  We also have reports\nof users using it on vxWorks and Symbian.  Note that on platforms\nwhere the compiler does not support the \"constructor\" attribute, you\nmust call \"MHD_init\" before using any MHD functions and \"MHD_fini\"\nafter you are done using MHD.\n\n\nDevelopment Status\n==================\n\nThis is a beta release for libmicrohttpd.  Before declaring the\nlibrary stable, we should implement support for HTTP \"Upgrade\" \nrequests and have testcases for the following features:\n\n- HTTP/1.1 pipelining (need to figure out how to ensure curl pipelines \n  -- and it seems libcurl has issues with pipelining, \n  see http://curl.haxx.se/mail/lib-2007-12/0248.html)\n- resource limit enforcement\n- client queuing early response, suppressing 100 CONTINUE\n- chunked encoding to validate handling of footers\n- more testing for SSL support\n- MHD basic and digest authentication\n\nIn particular, the following functions are not covered by 'make check':\n- mhd_panic_std (daemon.c); special case (abort)\n- parse_options (daemon.c)\n- MHD_set_panic_func (daemon.c)\n- MHD_get_version (daemon.c)\n\n\nThis is an early alpha release for libmicrospdy.  The following things\nshould be implemented (in order of importance) before we can claim to\nbe reasonably complete:\n- 8 different output queues (one for each priority) have to be implemented\ntogether with a suitable algorithm for utilizing them. Otherwise, downloading\na file will block all responses with same or smaller priority\n- SPDY RST_STREAM sending on each possible error (DONE?)\n- SPDY_close_session\n- Find the best way for closing still opened stream (new call or existing)\n- SPDY_is_stream_opened\n- SPDY PING (used often by browsers)\n- receiving SPDY WINDOW_UPDATE\n- SPDY Settings\n- SPDY PUSH\n- SPDY HEADERS\n- SPDY Credentials\n\nAdditional ideas for features include:\n- Individual callbacks for each session\n- Individual timeout for each session\n\nUnimplemented API functions of libmicrospdy:\n- SPDY_settings_create ();\n- SPDY_settings_add (...);\n- SPDY_settings_lookup (...);\n- SPDY_settings_iterate (...);\n- SPDY_settings_destroy (...);\n- SPDY_close_session(...);\n- SPDY_send_ping(...);\n- SPDY_send_settings (...);\n\nIn particular, we should write tests for:\n- Enqueueing responses while considering request priorities.\n- HTTP methods other than GET\n\n\n\n\n\nMissing documentation:\n======================\n\n- libmicrospdy manual:\n  * missing entirely\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetaswitch%2Flibmicrohttpd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmetaswitch%2Flibmicrohttpd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetaswitch%2Flibmicrohttpd/lists"}