rugged 1.3.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (656) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +6 -3
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_allocator.c +0 -54
  7. data/ext/rugged/rugged_blame.c +2 -0
  8. data/ext/rugged/rugged_blob.c +3 -0
  9. data/ext/rugged/rugged_commit.c +1 -0
  10. data/ext/rugged/rugged_config.c +9 -2
  11. data/ext/rugged/rugged_diff.c +1 -0
  12. data/ext/rugged/rugged_index.c +2 -0
  13. data/ext/rugged/rugged_patch.c +1 -0
  14. data/ext/rugged/rugged_rebase.c +1 -0
  15. data/ext/rugged/rugged_reference.c +1 -0
  16. data/ext/rugged/rugged_remote.c +28 -10
  17. data/ext/rugged/rugged_repo.c +7 -9
  18. data/ext/rugged/rugged_revwalk.c +5 -1
  19. data/ext/rugged/rugged_settings.c +5 -0
  20. data/ext/rugged/rugged_submodule.c +1 -0
  21. data/ext/rugged/rugged_tag.c +1 -0
  22. data/ext/rugged/rugged_tree.c +4 -0
  23. data/lib/rugged/index.rb +1 -1
  24. data/lib/rugged/tree.rb +5 -1
  25. data/lib/rugged/version.rb +1 -1
  26. data/vendor/libgit2/AUTHORS +1 -0
  27. data/vendor/libgit2/CMakeLists.txt +141 -289
  28. data/vendor/libgit2/COPYING +301 -20
  29. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  30. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  31. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  32. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  33. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  34. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  35. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  36. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  37. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  38. data/vendor/libgit2/cmake/FindHTTP_Parser.cmake +17 -17
  39. data/vendor/libgit2/cmake/FindIntlIconv.cmake +51 -0
  40. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  41. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  42. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  43. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  44. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  45. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  46. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  47. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  48. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  49. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  50. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  51. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  52. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  53. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +34 -0
  54. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +129 -101
  55. data/vendor/libgit2/cmake/SelectHashes.cmake +113 -54
  56. data/vendor/libgit2/cmake/SelectRegex.cmake +56 -0
  57. data/vendor/libgit2/cmake/SelectSSH.cmake +46 -0
  58. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  59. data/vendor/libgit2/cmake/SelectZlib.cmake +38 -0
  60. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  61. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  62. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  63. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  64. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  65. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  66. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  67. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  68. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  69. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  70. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  71. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +7 -5
  72. data/vendor/libgit2/deps/ntlmclient/ntlm.c +25 -25
  73. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  74. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  75. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  76. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  77. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  78. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  79. data/vendor/libgit2/deps/pcre/CMakeLists.txt +89 -88
  80. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  81. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  82. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  83. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  84. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  85. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  86. data/vendor/libgit2/deps/xdiff/git-xdiff.h +56 -0
  87. data/vendor/libgit2/{src → deps}/xdiff/xdiff.h +15 -15
  88. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.c +152 -125
  89. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.h +2 -4
  90. data/vendor/libgit2/{src → deps}/xdiff/xemit.c +26 -10
  91. data/vendor/libgit2/{src → deps}/xdiff/xhistogram.c +92 -94
  92. data/vendor/libgit2/{src → deps}/xdiff/xinclude.h +1 -12
  93. data/vendor/libgit2/{src → deps}/xdiff/xmacros.h +18 -1
  94. data/vendor/libgit2/{src → deps}/xdiff/xmerge.c +126 -137
  95. data/vendor/libgit2/{src → deps}/xdiff/xpatience.c +26 -46
  96. data/vendor/libgit2/{src → deps}/xdiff/xprepare.c +24 -46
  97. data/vendor/libgit2/{src → deps}/xdiff/xutils.c +36 -8
  98. data/vendor/libgit2/{src → deps}/xdiff/xutils.h +2 -1
  99. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  100. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  101. data/vendor/libgit2/deps/zlib/adler32.c +7 -22
  102. data/vendor/libgit2/deps/zlib/crc32.c +931 -317
  103. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  104. data/vendor/libgit2/deps/zlib/deflate.c +428 -453
  105. data/vendor/libgit2/deps/zlib/deflate.h +51 -23
  106. data/vendor/libgit2/deps/zlib/gzguts.h +15 -19
  107. data/vendor/libgit2/deps/zlib/infback.c +19 -31
  108. data/vendor/libgit2/deps/zlib/inffast.c +15 -18
  109. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  110. data/vendor/libgit2/deps/zlib/inflate.c +75 -110
  111. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  112. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  113. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  114. data/vendor/libgit2/deps/zlib/trees.c +294 -380
  115. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  116. data/vendor/libgit2/deps/zlib/zlib.h +310 -284
  117. data/vendor/libgit2/deps/zlib/zutil.c +20 -46
  118. data/vendor/libgit2/deps/zlib/zutil.h +24 -41
  119. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  120. data/vendor/libgit2/include/git2/apply.h +43 -8
  121. data/vendor/libgit2/include/git2/attr.h +28 -6
  122. data/vendor/libgit2/include/git2/blame.h +137 -29
  123. data/vendor/libgit2/include/git2/blob.h +85 -29
  124. data/vendor/libgit2/include/git2/branch.h +25 -16
  125. data/vendor/libgit2/include/git2/buffer.h +24 -82
  126. data/vendor/libgit2/include/git2/cert.h +4 -3
  127. data/vendor/libgit2/include/git2/checkout.h +88 -34
  128. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  129. data/vendor/libgit2/include/git2/clone.h +28 -12
  130. data/vendor/libgit2/include/git2/commit.h +134 -3
  131. data/vendor/libgit2/include/git2/common.h +172 -59
  132. data/vendor/libgit2/include/git2/config.h +118 -32
  133. data/vendor/libgit2/include/git2/credential.h +32 -3
  134. data/vendor/libgit2/include/git2/credential_helpers.h +2 -0
  135. data/vendor/libgit2/include/git2/deprecated.h +141 -3
  136. data/vendor/libgit2/include/git2/describe.h +20 -3
  137. data/vendor/libgit2/include/git2/diff.h +95 -19
  138. data/vendor/libgit2/include/git2/email.h +10 -30
  139. data/vendor/libgit2/include/git2/errors.h +51 -61
  140. data/vendor/libgit2/include/git2/experimental.h +20 -0
  141. data/vendor/libgit2/include/git2/filter.h +21 -9
  142. data/vendor/libgit2/include/git2/global.h +8 -1
  143. data/vendor/libgit2/include/git2/graph.h +4 -2
  144. data/vendor/libgit2/include/git2/ignore.h +11 -1
  145. data/vendor/libgit2/include/git2/index.h +111 -11
  146. data/vendor/libgit2/include/git2/indexer.h +67 -2
  147. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  148. data/vendor/libgit2/include/git2/merge.h +70 -5
  149. data/vendor/libgit2/include/git2/message.h +4 -2
  150. data/vendor/libgit2/include/git2/net.h +3 -1
  151. data/vendor/libgit2/include/git2/notes.h +9 -6
  152. data/vendor/libgit2/include/git2/object.h +57 -7
  153. data/vendor/libgit2/include/git2/odb.h +156 -33
  154. data/vendor/libgit2/include/git2/odb_backend.h +132 -16
  155. data/vendor/libgit2/include/git2/oid.h +116 -17
  156. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  157. data/vendor/libgit2/include/git2/pack.h +37 -9
  158. data/vendor/libgit2/include/git2/patch.h +10 -3
  159. data/vendor/libgit2/include/git2/pathspec.h +10 -1
  160. data/vendor/libgit2/include/git2/proxy.h +11 -1
  161. data/vendor/libgit2/include/git2/rebase.h +18 -7
  162. data/vendor/libgit2/include/git2/refdb.h +5 -2
  163. data/vendor/libgit2/include/git2/reflog.h +4 -3
  164. data/vendor/libgit2/include/git2/refs.h +11 -8
  165. data/vendor/libgit2/include/git2/refspec.h +14 -4
  166. data/vendor/libgit2/include/git2/remote.h +295 -54
  167. data/vendor/libgit2/include/git2/repository.h +95 -25
  168. data/vendor/libgit2/include/git2/reset.h +18 -5
  169. data/vendor/libgit2/include/git2/revert.h +9 -4
  170. data/vendor/libgit2/include/git2/revparse.h +4 -4
  171. data/vendor/libgit2/include/git2/revwalk.h +7 -3
  172. data/vendor/libgit2/include/git2/signature.h +47 -2
  173. data/vendor/libgit2/include/git2/stash.h +78 -10
  174. data/vendor/libgit2/include/git2/status.h +24 -11
  175. data/vendor/libgit2/include/git2/stdint.h +87 -85
  176. data/vendor/libgit2/include/git2/strarray.h +2 -16
  177. data/vendor/libgit2/include/git2/submodule.h +27 -11
  178. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  179. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  180. data/vendor/libgit2/include/git2/sys/commit_graph.h +110 -59
  181. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  182. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  183. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  184. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  185. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  186. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  187. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  188. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  189. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  190. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  191. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  192. data/vendor/libgit2/include/git2/sys/odb_backend.h +10 -9
  193. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  194. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  195. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  196. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  197. data/vendor/libgit2/include/git2/sys/remote.h +53 -0
  198. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  199. data/vendor/libgit2/include/git2/sys/stream.h +26 -3
  200. data/vendor/libgit2/include/git2/sys/transport.h +87 -41
  201. data/vendor/libgit2/include/git2/tag.h +4 -1
  202. data/vendor/libgit2/include/git2/trace.h +9 -3
  203. data/vendor/libgit2/include/git2/transaction.h +3 -2
  204. data/vendor/libgit2/include/git2/transport.h +11 -3
  205. data/vendor/libgit2/include/git2/tree.h +20 -8
  206. data/vendor/libgit2/include/git2/types.h +26 -10
  207. data/vendor/libgit2/include/git2/version.h +63 -6
  208. data/vendor/libgit2/include/git2/worktree.h +30 -8
  209. data/vendor/libgit2/include/git2.h +1 -0
  210. data/vendor/libgit2/src/CMakeLists.txt +203 -420
  211. data/vendor/libgit2/src/README.md +12 -0
  212. data/vendor/libgit2/src/cli/CMakeLists.txt +56 -0
  213. data/vendor/libgit2/src/cli/README.md +26 -0
  214. data/vendor/libgit2/src/{branch.h → cli/cmd.c} +10 -8
  215. data/vendor/libgit2/src/cli/cmd.h +37 -0
  216. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  217. data/vendor/libgit2/src/cli/cmd_cat_file.c +202 -0
  218. data/vendor/libgit2/src/cli/cmd_clone.c +190 -0
  219. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  220. data/vendor/libgit2/src/cli/cmd_hash_object.c +152 -0
  221. data/vendor/libgit2/src/cli/cmd_help.c +85 -0
  222. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  223. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  224. data/vendor/libgit2/src/cli/common.c +168 -0
  225. data/vendor/libgit2/src/cli/common.h +63 -0
  226. data/vendor/libgit2/src/cli/error.h +51 -0
  227. data/vendor/libgit2/src/cli/main.c +134 -0
  228. data/vendor/libgit2/src/cli/opt.c +695 -0
  229. data/vendor/libgit2/src/cli/opt.h +367 -0
  230. data/vendor/libgit2/src/cli/opt_usage.c +263 -0
  231. data/vendor/libgit2/src/cli/opt_usage.h +40 -0
  232. data/vendor/libgit2/src/cli/progress.c +395 -0
  233. data/vendor/libgit2/src/cli/progress.h +129 -0
  234. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  235. data/vendor/libgit2/src/cli/unix/sighandler.c +37 -0
  236. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  237. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  238. data/vendor/libgit2/src/libgit2/CMakeLists.txt +140 -0
  239. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +2 -2
  240. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  241. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +32 -34
  242. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  243. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +48 -31
  244. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +25 -20
  245. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +6 -4
  246. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +87 -46
  247. data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +5 -9
  248. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +152 -57
  249. data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +1 -0
  250. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -2
  251. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  252. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  253. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  254. data/vendor/libgit2/src/libgit2/branch.h +31 -0
  255. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  256. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  257. data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +22 -17
  258. data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +7 -9
  259. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +107 -91
  260. data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -2
  261. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +14 -15
  262. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +254 -203
  263. data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +4 -1
  264. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +296 -77
  265. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  266. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +246 -135
  267. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +33 -8
  268. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +17 -7
  269. data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +1 -0
  270. data/vendor/libgit2/src/libgit2/common.h +55 -0
  271. data/vendor/libgit2/src/{config.c → libgit2/config.c} +490 -360
  272. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  273. data/vendor/libgit2/src/{config.h → libgit2/config.h} +24 -6
  274. data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +8 -10
  275. data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +4 -5
  276. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +212 -183
  277. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  278. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  279. data/vendor/libgit2/src/libgit2/config_mem.c +374 -0
  280. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +37 -32
  281. data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +24 -31
  282. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  283. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +62 -51
  284. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +44 -14
  285. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +8 -10
  286. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +46 -55
  287. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +5 -5
  288. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +45 -27
  289. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +70 -20
  290. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  291. data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +22 -6
  292. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +192 -105
  293. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  294. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  295. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +49 -16
  296. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  297. data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +1 -1
  298. data/vendor/libgit2/src/{email.c → libgit2/email.c} +58 -40
  299. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  300. data/vendor/libgit2/src/{transports/ssh.h → libgit2/experimental.h.in} +3 -4
  301. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +105 -30
  302. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -3
  303. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +30 -28
  304. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +132 -58
  305. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  306. data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +3 -3
  307. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  308. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  309. data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +1 -1
  310. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  311. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  312. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +44 -39
  313. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  314. data/vendor/libgit2/src/{index.c → libgit2/index.c} +460 -276
  315. data/vendor/libgit2/src/{index.h → libgit2/index.h} +21 -5
  316. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  317. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  318. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +208 -124
  319. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +102 -71
  320. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +8 -5
  321. data/vendor/libgit2/src/libgit2/libgit2.c +268 -0
  322. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +39 -37
  323. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +83 -73
  324. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  325. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +4 -4
  326. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -5
  327. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  328. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +174 -112
  329. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +17 -6
  330. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +53 -57
  331. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +9 -2
  332. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +29 -37
  333. data/vendor/libgit2/src/{object.c → libgit2/object.c} +166 -35
  334. data/vendor/libgit2/src/{object.h → libgit2/object.h} +17 -2
  335. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +261 -88
  336. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  337. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  338. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +67 -22
  339. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +162 -89
  340. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +171 -92
  341. data/vendor/libgit2/src/libgit2/oid.h +284 -0
  342. data/vendor/libgit2/src/libgit2/oidarray.c +89 -0
  343. data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +5 -1
  344. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +126 -66
  345. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +28 -12
  346. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +146 -111
  347. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +45 -25
  348. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +8 -4
  349. data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +1 -1
  350. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  351. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +8 -1
  352. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +51 -16
  353. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  354. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +42 -34
  355. data/vendor/libgit2/src/libgit2/path.c +375 -0
  356. data/vendor/libgit2/src/libgit2/path.h +68 -0
  357. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +7 -7
  358. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  359. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  360. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  361. data/vendor/libgit2/src/{push.c → libgit2/push.c} +116 -60
  362. data/vendor/libgit2/src/{push.h → libgit2/push.h} +5 -16
  363. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  364. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  365. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +147 -147
  366. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +639 -254
  367. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +8 -7
  368. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +3 -2
  369. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +67 -39
  370. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +8 -3
  371. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +60 -38
  372. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +13 -2
  373. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +821 -454
  374. data/vendor/libgit2/src/libgit2/remote.h +101 -0
  375. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1377 -594
  376. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +43 -12
  377. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  378. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +18 -22
  379. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +76 -44
  380. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +48 -19
  381. data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +3 -3
  382. data/vendor/libgit2/src/{libgit2.c → libgit2/settings.c} +162 -95
  383. data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +6 -2
  384. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +144 -21
  385. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -2
  386. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +243 -68
  387. data/vendor/libgit2/src/{status.c → libgit2/status.c} +5 -2
  388. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  389. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  390. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +62 -67
  391. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +41 -24
  392. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +2 -0
  393. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +11 -3
  394. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +6 -3
  395. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  396. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  397. data/vendor/libgit2/src/libgit2/streams/socket.c +428 -0
  398. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +3 -1
  399. data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +79 -19
  400. data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +5 -0
  401. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +279 -220
  402. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +10 -11
  403. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  404. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +55 -18
  405. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +74 -43
  406. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  407. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  408. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  409. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +7 -7
  410. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +27 -21
  411. data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +4 -1
  412. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +14 -11
  413. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  414. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +3 -5
  415. data/vendor/libgit2/src/{transports/auth_negotiate.c → libgit2/transports/auth_gssapi.c} +44 -45
  416. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +1 -1
  417. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +1 -2
  418. data/vendor/libgit2/src/{transports/auth_ntlm.c → libgit2/transports/auth_ntlmclient.c} +22 -22
  419. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  420. data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +1 -1
  421. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +16 -19
  422. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +49 -24
  423. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -11
  424. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +188 -134
  425. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  426. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  427. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  428. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +159 -127
  429. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +142 -165
  430. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +56 -36
  431. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +307 -74
  432. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +297 -97
  433. data/vendor/libgit2/src/libgit2/transports/ssh.c +85 -0
  434. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  435. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  436. data/vendor/libgit2/src/{transports/ssh.c → libgit2/transports/ssh_libssh2.c} +414 -268
  437. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  438. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +101 -75
  439. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +30 -20
  440. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +7 -5
  441. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +128 -110
  442. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +7 -6
  443. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +160 -121
  444. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  445. data/vendor/libgit2/src/util/CMakeLists.txt +77 -0
  446. data/vendor/libgit2/src/{alloc.c → util/alloc.c} +69 -7
  447. data/vendor/libgit2/src/util/alloc.h +65 -0
  448. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  449. data/vendor/libgit2/src/util/allocators/debugalloc.h +17 -0
  450. data/vendor/libgit2/src/util/allocators/failalloc.c +32 -0
  451. data/vendor/libgit2/src/util/allocators/failalloc.h +17 -0
  452. data/vendor/libgit2/src/util/allocators/stdalloc.c +37 -0
  453. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  454. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +50 -0
  455. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  456. data/vendor/libgit2/src/{array.h → util/array.h} +25 -19
  457. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  458. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +5 -1
  459. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  460. data/vendor/libgit2/src/{date.c → util/date.c} +35 -33
  461. data/vendor/libgit2/src/util/date.h +45 -0
  462. data/vendor/libgit2/src/util/errors.c +401 -0
  463. data/vendor/libgit2/src/{errors.h → util/errors.h} +22 -19
  464. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +35 -30
  465. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +21 -8
  466. data/vendor/libgit2/src/{path.c → util/fs_path.c} +591 -615
  467. data/vendor/libgit2/src/{path.h → util/fs_path.h} +257 -181
  468. data/vendor/libgit2/src/{futils.c → util/futils.c} +144 -95
  469. data/vendor/libgit2/src/{futils.h → util/futils.h} +40 -18
  470. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +33 -2
  471. data/vendor/libgit2/src/{common.h → util/git2_util.h} +26 -59
  472. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  473. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  474. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  475. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  476. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  477. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  478. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  479. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  480. data/vendor/libgit2/src/util/hash/openssl.c +347 -0
  481. data/vendor/libgit2/src/util/hash/openssl.h +61 -0
  482. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  483. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  484. data/vendor/libgit2/src/util/hash/sha.h +73 -0
  485. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  486. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  487. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  488. data/vendor/libgit2/src/util/hash.c +158 -0
  489. data/vendor/libgit2/src/util/hash.h +61 -0
  490. data/vendor/libgit2/src/util/hashmap.h +424 -0
  491. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  492. data/vendor/libgit2/src/{integer.h → util/integer.h} +3 -1
  493. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  494. data/vendor/libgit2/src/util/net.c +1160 -0
  495. data/vendor/libgit2/src/{net.h → util/net.h} +45 -4
  496. data/vendor/libgit2/src/{pool.c → util/pool.c} +1 -1
  497. data/vendor/libgit2/src/{pool.h → util/pool.h} +6 -1
  498. data/vendor/libgit2/src/{posix.c → util/posix.c} +57 -3
  499. data/vendor/libgit2/src/{posix.h → util/posix.h} +26 -1
  500. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +3 -3
  501. data/vendor/libgit2/src/util/process.h +222 -0
  502. data/vendor/libgit2/src/util/rand.c +230 -0
  503. data/vendor/libgit2/src/util/rand.h +37 -0
  504. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +5 -5
  505. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  506. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  507. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  508. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +15 -14
  509. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +5 -5
  510. data/vendor/libgit2/src/util/staticstr.h +66 -0
  511. data/vendor/libgit2/src/{buffer.c → util/str.c} +159 -153
  512. data/vendor/libgit2/src/util/str.h +357 -0
  513. data/vendor/libgit2/src/util/strlist.c +108 -0
  514. data/vendor/libgit2/src/util/strlist.h +36 -0
  515. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  516. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  517. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  518. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  519. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -6
  520. data/vendor/libgit2/src/util/unix/process.c +629 -0
  521. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +24 -8
  522. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  523. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  524. data/vendor/libgit2/src/{util.c → util/util.c} +24 -19
  525. data/vendor/libgit2/src/{util.h → util/util.h} +30 -81
  526. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  527. data/vendor/libgit2/src/{vector.c → util/vector.c} +3 -3
  528. data/vendor/libgit2/src/{vector.h → util/vector.h} +4 -4
  529. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  530. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  531. data/vendor/libgit2/src/{win32 → util/win32}/error.c +1 -1
  532. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  533. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  534. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +148 -17
  535. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  536. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  537. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +42 -35
  538. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  539. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  540. data/vendor/libgit2/src/util/win32/process.c +506 -0
  541. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  542. data/vendor/libgit2/src/util/win32/utf-conv.c +144 -0
  543. data/vendor/libgit2/src/util/win32/utf-conv.h +127 -0
  544. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  545. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  546. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  547. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  548. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +1 -1
  549. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  550. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  551. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  552. metadata +431 -362
  553. data/vendor/libgit2/cmake/FindIconv.cmake +0 -45
  554. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  555. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  556. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  557. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  558. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  559. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  560. data/vendor/libgit2/src/alloc.h +0 -40
  561. data/vendor/libgit2/src/allocators/failalloc.c +0 -92
  562. data/vendor/libgit2/src/allocators/failalloc.h +0 -23
  563. data/vendor/libgit2/src/allocators/stdalloc.c +0 -150
  564. data/vendor/libgit2/src/allocators/win32_leakcheck.c +0 -118
  565. data/vendor/libgit2/src/buffer.h +0 -374
  566. data/vendor/libgit2/src/commit.h +0 -46
  567. data/vendor/libgit2/src/config_entries.c +0 -237
  568. data/vendor/libgit2/src/config_entries.h +0 -24
  569. data/vendor/libgit2/src/config_mem.c +0 -220
  570. data/vendor/libgit2/src/errors.c +0 -238
  571. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  572. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  573. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  574. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  575. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  576. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  577. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  578. data/vendor/libgit2/src/hash/sha1.h +0 -38
  579. data/vendor/libgit2/src/hash.c +0 -110
  580. data/vendor/libgit2/src/hash.h +0 -46
  581. data/vendor/libgit2/src/idxmap.c +0 -157
  582. data/vendor/libgit2/src/idxmap.h +0 -177
  583. data/vendor/libgit2/src/khash.h +0 -615
  584. data/vendor/libgit2/src/libgit2.h +0 -15
  585. data/vendor/libgit2/src/message.h +0 -17
  586. data/vendor/libgit2/src/net.c +0 -540
  587. data/vendor/libgit2/src/netops.c +0 -125
  588. data/vendor/libgit2/src/netops.h +0 -68
  589. data/vendor/libgit2/src/offmap.c +0 -101
  590. data/vendor/libgit2/src/offmap.h +0 -133
  591. data/vendor/libgit2/src/oid.h +0 -51
  592. data/vendor/libgit2/src/oidarray.c +0 -43
  593. data/vendor/libgit2/src/oidmap.c +0 -107
  594. data/vendor/libgit2/src/oidmap.h +0 -128
  595. data/vendor/libgit2/src/remote.h +0 -55
  596. data/vendor/libgit2/src/streams/socket.c +0 -239
  597. data/vendor/libgit2/src/strmap.c +0 -100
  598. data/vendor/libgit2/src/strmap.h +0 -131
  599. data/vendor/libgit2/src/sysdir.c +0 -347
  600. data/vendor/libgit2/src/threadstate.c +0 -84
  601. data/vendor/libgit2/src/threadstate.h +0 -24
  602. data/vendor/libgit2/src/win32/findfile.c +0 -230
  603. data/vendor/libgit2/src/win32/findfile.h +0 -19
  604. data/vendor/libgit2/src/win32/utf-conv.c +0 -146
  605. data/vendor/libgit2/src/win32/utf-conv.h +0 -60
  606. /data/vendor/libgit2/{src → deps}/xdiff/xemit.h +0 -0
  607. /data/vendor/libgit2/{src → deps}/xdiff/xprepare.h +0 -0
  608. /data/vendor/libgit2/{src → deps}/xdiff/xtypes.h +0 -0
  609. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  610. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  611. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  612. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  613. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  614. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  615. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  616. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  617. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  618. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  619. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  620. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  621. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  622. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  623. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  624. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  625. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  626. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  627. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  628. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  629. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  630. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  631. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  632. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  633. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  634. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  635. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  636. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  637. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  638. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  639. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  640. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  641. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  642. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  643. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  644. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  645. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  646. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  647. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  648. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  649. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  650. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  651. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  652. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  653. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  654. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  655. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  656. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -0,0 +1,897 @@
1
+
2
+ #ifndef INCLUDE_LLHTTP_H_
3
+ #define INCLUDE_LLHTTP_H_
4
+
5
+ #define LLHTTP_VERSION_MAJOR 9
6
+ #define LLHTTP_VERSION_MINOR 2
7
+ #define LLHTTP_VERSION_PATCH 1
8
+
9
+ #ifndef INCLUDE_LLHTTP_ITSELF_H_
10
+ #define INCLUDE_LLHTTP_ITSELF_H_
11
+ #ifdef __cplusplus
12
+ extern "C" {
13
+ #endif
14
+
15
+ #include <stdint.h>
16
+
17
+ typedef struct llhttp__internal_s llhttp__internal_t;
18
+ struct llhttp__internal_s {
19
+ int32_t _index;
20
+ void* _span_pos0;
21
+ void* _span_cb0;
22
+ int32_t error;
23
+ const char* reason;
24
+ const char* error_pos;
25
+ void* data;
26
+ void* _current;
27
+ uint64_t content_length;
28
+ uint8_t type;
29
+ uint8_t method;
30
+ uint8_t http_major;
31
+ uint8_t http_minor;
32
+ uint8_t header_state;
33
+ uint16_t lenient_flags;
34
+ uint8_t upgrade;
35
+ uint8_t finish;
36
+ uint16_t flags;
37
+ uint16_t status_code;
38
+ uint8_t initial_message_completed;
39
+ void* settings;
40
+ };
41
+
42
+ int llhttp__internal_init(llhttp__internal_t* s);
43
+ int llhttp__internal_execute(llhttp__internal_t* s, const char* p, const char* endp);
44
+
45
+ #ifdef __cplusplus
46
+ } /* extern "C" */
47
+ #endif
48
+ #endif /* INCLUDE_LLHTTP_ITSELF_H_ */
49
+
50
+
51
+ #ifndef LLLLHTTP_C_HEADERS_
52
+ #define LLLLHTTP_C_HEADERS_
53
+ #ifdef __cplusplus
54
+ extern "C" {
55
+ #endif
56
+
57
+ enum llhttp_errno {
58
+ HPE_OK = 0,
59
+ HPE_INTERNAL = 1,
60
+ HPE_STRICT = 2,
61
+ HPE_CR_EXPECTED = 25,
62
+ HPE_LF_EXPECTED = 3,
63
+ HPE_UNEXPECTED_CONTENT_LENGTH = 4,
64
+ HPE_UNEXPECTED_SPACE = 30,
65
+ HPE_CLOSED_CONNECTION = 5,
66
+ HPE_INVALID_METHOD = 6,
67
+ HPE_INVALID_URL = 7,
68
+ HPE_INVALID_CONSTANT = 8,
69
+ HPE_INVALID_VERSION = 9,
70
+ HPE_INVALID_HEADER_TOKEN = 10,
71
+ HPE_INVALID_CONTENT_LENGTH = 11,
72
+ HPE_INVALID_CHUNK_SIZE = 12,
73
+ HPE_INVALID_STATUS = 13,
74
+ HPE_INVALID_EOF_STATE = 14,
75
+ HPE_INVALID_TRANSFER_ENCODING = 15,
76
+ HPE_CB_MESSAGE_BEGIN = 16,
77
+ HPE_CB_HEADERS_COMPLETE = 17,
78
+ HPE_CB_MESSAGE_COMPLETE = 18,
79
+ HPE_CB_CHUNK_HEADER = 19,
80
+ HPE_CB_CHUNK_COMPLETE = 20,
81
+ HPE_PAUSED = 21,
82
+ HPE_PAUSED_UPGRADE = 22,
83
+ HPE_PAUSED_H2_UPGRADE = 23,
84
+ HPE_USER = 24,
85
+ HPE_CB_URL_COMPLETE = 26,
86
+ HPE_CB_STATUS_COMPLETE = 27,
87
+ HPE_CB_METHOD_COMPLETE = 32,
88
+ HPE_CB_VERSION_COMPLETE = 33,
89
+ HPE_CB_HEADER_FIELD_COMPLETE = 28,
90
+ HPE_CB_HEADER_VALUE_COMPLETE = 29,
91
+ HPE_CB_CHUNK_EXTENSION_NAME_COMPLETE = 34,
92
+ HPE_CB_CHUNK_EXTENSION_VALUE_COMPLETE = 35,
93
+ HPE_CB_RESET = 31
94
+ };
95
+ typedef enum llhttp_errno llhttp_errno_t;
96
+
97
+ enum llhttp_flags {
98
+ F_CONNECTION_KEEP_ALIVE = 0x1,
99
+ F_CONNECTION_CLOSE = 0x2,
100
+ F_CONNECTION_UPGRADE = 0x4,
101
+ F_CHUNKED = 0x8,
102
+ F_UPGRADE = 0x10,
103
+ F_CONTENT_LENGTH = 0x20,
104
+ F_SKIPBODY = 0x40,
105
+ F_TRAILING = 0x80,
106
+ F_TRANSFER_ENCODING = 0x200
107
+ };
108
+ typedef enum llhttp_flags llhttp_flags_t;
109
+
110
+ enum llhttp_lenient_flags {
111
+ LENIENT_HEADERS = 0x1,
112
+ LENIENT_CHUNKED_LENGTH = 0x2,
113
+ LENIENT_KEEP_ALIVE = 0x4,
114
+ LENIENT_TRANSFER_ENCODING = 0x8,
115
+ LENIENT_VERSION = 0x10,
116
+ LENIENT_DATA_AFTER_CLOSE = 0x20,
117
+ LENIENT_OPTIONAL_LF_AFTER_CR = 0x40,
118
+ LENIENT_OPTIONAL_CRLF_AFTER_CHUNK = 0x80,
119
+ LENIENT_OPTIONAL_CR_BEFORE_LF = 0x100,
120
+ LENIENT_SPACES_AFTER_CHUNK_SIZE = 0x200
121
+ };
122
+ typedef enum llhttp_lenient_flags llhttp_lenient_flags_t;
123
+
124
+ enum llhttp_type {
125
+ HTTP_BOTH = 0,
126
+ HTTP_REQUEST = 1,
127
+ HTTP_RESPONSE = 2
128
+ };
129
+ typedef enum llhttp_type llhttp_type_t;
130
+
131
+ enum llhttp_finish {
132
+ HTTP_FINISH_SAFE = 0,
133
+ HTTP_FINISH_SAFE_WITH_CB = 1,
134
+ HTTP_FINISH_UNSAFE = 2
135
+ };
136
+ typedef enum llhttp_finish llhttp_finish_t;
137
+
138
+ enum llhttp_method {
139
+ HTTP_DELETE = 0,
140
+ HTTP_GET = 1,
141
+ HTTP_HEAD = 2,
142
+ HTTP_POST = 3,
143
+ HTTP_PUT = 4,
144
+ HTTP_CONNECT = 5,
145
+ HTTP_OPTIONS = 6,
146
+ HTTP_TRACE = 7,
147
+ HTTP_COPY = 8,
148
+ HTTP_LOCK = 9,
149
+ HTTP_MKCOL = 10,
150
+ HTTP_MOVE = 11,
151
+ HTTP_PROPFIND = 12,
152
+ HTTP_PROPPATCH = 13,
153
+ HTTP_SEARCH = 14,
154
+ HTTP_UNLOCK = 15,
155
+ HTTP_BIND = 16,
156
+ HTTP_REBIND = 17,
157
+ HTTP_UNBIND = 18,
158
+ HTTP_ACL = 19,
159
+ HTTP_REPORT = 20,
160
+ HTTP_MKACTIVITY = 21,
161
+ HTTP_CHECKOUT = 22,
162
+ HTTP_MERGE = 23,
163
+ HTTP_MSEARCH = 24,
164
+ HTTP_NOTIFY = 25,
165
+ HTTP_SUBSCRIBE = 26,
166
+ HTTP_UNSUBSCRIBE = 27,
167
+ HTTP_PATCH = 28,
168
+ HTTP_PURGE = 29,
169
+ HTTP_MKCALENDAR = 30,
170
+ HTTP_LINK = 31,
171
+ HTTP_UNLINK = 32,
172
+ HTTP_SOURCE = 33,
173
+ HTTP_PRI = 34,
174
+ HTTP_DESCRIBE = 35,
175
+ HTTP_ANNOUNCE = 36,
176
+ HTTP_SETUP = 37,
177
+ HTTP_PLAY = 38,
178
+ HTTP_PAUSE = 39,
179
+ HTTP_TEARDOWN = 40,
180
+ HTTP_GET_PARAMETER = 41,
181
+ HTTP_SET_PARAMETER = 42,
182
+ HTTP_REDIRECT = 43,
183
+ HTTP_RECORD = 44,
184
+ HTTP_FLUSH = 45,
185
+ HTTP_QUERY = 46
186
+ };
187
+ typedef enum llhttp_method llhttp_method_t;
188
+
189
+ enum llhttp_status {
190
+ HTTP_STATUS_CONTINUE = 100,
191
+ HTTP_STATUS_SWITCHING_PROTOCOLS = 101,
192
+ HTTP_STATUS_PROCESSING = 102,
193
+ HTTP_STATUS_EARLY_HINTS = 103,
194
+ HTTP_STATUS_RESPONSE_IS_STALE = 110,
195
+ HTTP_STATUS_REVALIDATION_FAILED = 111,
196
+ HTTP_STATUS_DISCONNECTED_OPERATION = 112,
197
+ HTTP_STATUS_HEURISTIC_EXPIRATION = 113,
198
+ HTTP_STATUS_MISCELLANEOUS_WARNING = 199,
199
+ HTTP_STATUS_OK = 200,
200
+ HTTP_STATUS_CREATED = 201,
201
+ HTTP_STATUS_ACCEPTED = 202,
202
+ HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION = 203,
203
+ HTTP_STATUS_NO_CONTENT = 204,
204
+ HTTP_STATUS_RESET_CONTENT = 205,
205
+ HTTP_STATUS_PARTIAL_CONTENT = 206,
206
+ HTTP_STATUS_MULTI_STATUS = 207,
207
+ HTTP_STATUS_ALREADY_REPORTED = 208,
208
+ HTTP_STATUS_TRANSFORMATION_APPLIED = 214,
209
+ HTTP_STATUS_IM_USED = 226,
210
+ HTTP_STATUS_MISCELLANEOUS_PERSISTENT_WARNING = 299,
211
+ HTTP_STATUS_MULTIPLE_CHOICES = 300,
212
+ HTTP_STATUS_MOVED_PERMANENTLY = 301,
213
+ HTTP_STATUS_FOUND = 302,
214
+ HTTP_STATUS_SEE_OTHER = 303,
215
+ HTTP_STATUS_NOT_MODIFIED = 304,
216
+ HTTP_STATUS_USE_PROXY = 305,
217
+ HTTP_STATUS_SWITCH_PROXY = 306,
218
+ HTTP_STATUS_TEMPORARY_REDIRECT = 307,
219
+ HTTP_STATUS_PERMANENT_REDIRECT = 308,
220
+ HTTP_STATUS_BAD_REQUEST = 400,
221
+ HTTP_STATUS_UNAUTHORIZED = 401,
222
+ HTTP_STATUS_PAYMENT_REQUIRED = 402,
223
+ HTTP_STATUS_FORBIDDEN = 403,
224
+ HTTP_STATUS_NOT_FOUND = 404,
225
+ HTTP_STATUS_METHOD_NOT_ALLOWED = 405,
226
+ HTTP_STATUS_NOT_ACCEPTABLE = 406,
227
+ HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED = 407,
228
+ HTTP_STATUS_REQUEST_TIMEOUT = 408,
229
+ HTTP_STATUS_CONFLICT = 409,
230
+ HTTP_STATUS_GONE = 410,
231
+ HTTP_STATUS_LENGTH_REQUIRED = 411,
232
+ HTTP_STATUS_PRECONDITION_FAILED = 412,
233
+ HTTP_STATUS_PAYLOAD_TOO_LARGE = 413,
234
+ HTTP_STATUS_URI_TOO_LONG = 414,
235
+ HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE = 415,
236
+ HTTP_STATUS_RANGE_NOT_SATISFIABLE = 416,
237
+ HTTP_STATUS_EXPECTATION_FAILED = 417,
238
+ HTTP_STATUS_IM_A_TEAPOT = 418,
239
+ HTTP_STATUS_PAGE_EXPIRED = 419,
240
+ HTTP_STATUS_ENHANCE_YOUR_CALM = 420,
241
+ HTTP_STATUS_MISDIRECTED_REQUEST = 421,
242
+ HTTP_STATUS_UNPROCESSABLE_ENTITY = 422,
243
+ HTTP_STATUS_LOCKED = 423,
244
+ HTTP_STATUS_FAILED_DEPENDENCY = 424,
245
+ HTTP_STATUS_TOO_EARLY = 425,
246
+ HTTP_STATUS_UPGRADE_REQUIRED = 426,
247
+ HTTP_STATUS_PRECONDITION_REQUIRED = 428,
248
+ HTTP_STATUS_TOO_MANY_REQUESTS = 429,
249
+ HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL = 430,
250
+ HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE = 431,
251
+ HTTP_STATUS_LOGIN_TIMEOUT = 440,
252
+ HTTP_STATUS_NO_RESPONSE = 444,
253
+ HTTP_STATUS_RETRY_WITH = 449,
254
+ HTTP_STATUS_BLOCKED_BY_PARENTAL_CONTROL = 450,
255
+ HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS = 451,
256
+ HTTP_STATUS_CLIENT_CLOSED_LOAD_BALANCED_REQUEST = 460,
257
+ HTTP_STATUS_INVALID_X_FORWARDED_FOR = 463,
258
+ HTTP_STATUS_REQUEST_HEADER_TOO_LARGE = 494,
259
+ HTTP_STATUS_SSL_CERTIFICATE_ERROR = 495,
260
+ HTTP_STATUS_SSL_CERTIFICATE_REQUIRED = 496,
261
+ HTTP_STATUS_HTTP_REQUEST_SENT_TO_HTTPS_PORT = 497,
262
+ HTTP_STATUS_INVALID_TOKEN = 498,
263
+ HTTP_STATUS_CLIENT_CLOSED_REQUEST = 499,
264
+ HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
265
+ HTTP_STATUS_NOT_IMPLEMENTED = 501,
266
+ HTTP_STATUS_BAD_GATEWAY = 502,
267
+ HTTP_STATUS_SERVICE_UNAVAILABLE = 503,
268
+ HTTP_STATUS_GATEWAY_TIMEOUT = 504,
269
+ HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED = 505,
270
+ HTTP_STATUS_VARIANT_ALSO_NEGOTIATES = 506,
271
+ HTTP_STATUS_INSUFFICIENT_STORAGE = 507,
272
+ HTTP_STATUS_LOOP_DETECTED = 508,
273
+ HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED = 509,
274
+ HTTP_STATUS_NOT_EXTENDED = 510,
275
+ HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED = 511,
276
+ HTTP_STATUS_WEB_SERVER_UNKNOWN_ERROR = 520,
277
+ HTTP_STATUS_WEB_SERVER_IS_DOWN = 521,
278
+ HTTP_STATUS_CONNECTION_TIMEOUT = 522,
279
+ HTTP_STATUS_ORIGIN_IS_UNREACHABLE = 523,
280
+ HTTP_STATUS_TIMEOUT_OCCURED = 524,
281
+ HTTP_STATUS_SSL_HANDSHAKE_FAILED = 525,
282
+ HTTP_STATUS_INVALID_SSL_CERTIFICATE = 526,
283
+ HTTP_STATUS_RAILGUN_ERROR = 527,
284
+ HTTP_STATUS_SITE_IS_OVERLOADED = 529,
285
+ HTTP_STATUS_SITE_IS_FROZEN = 530,
286
+ HTTP_STATUS_IDENTITY_PROVIDER_AUTHENTICATION_ERROR = 561,
287
+ HTTP_STATUS_NETWORK_READ_TIMEOUT = 598,
288
+ HTTP_STATUS_NETWORK_CONNECT_TIMEOUT = 599
289
+ };
290
+ typedef enum llhttp_status llhttp_status_t;
291
+
292
+ #define HTTP_ERRNO_MAP(XX) \
293
+ XX(0, OK, OK) \
294
+ XX(1, INTERNAL, INTERNAL) \
295
+ XX(2, STRICT, STRICT) \
296
+ XX(25, CR_EXPECTED, CR_EXPECTED) \
297
+ XX(3, LF_EXPECTED, LF_EXPECTED) \
298
+ XX(4, UNEXPECTED_CONTENT_LENGTH, UNEXPECTED_CONTENT_LENGTH) \
299
+ XX(30, UNEXPECTED_SPACE, UNEXPECTED_SPACE) \
300
+ XX(5, CLOSED_CONNECTION, CLOSED_CONNECTION) \
301
+ XX(6, INVALID_METHOD, INVALID_METHOD) \
302
+ XX(7, INVALID_URL, INVALID_URL) \
303
+ XX(8, INVALID_CONSTANT, INVALID_CONSTANT) \
304
+ XX(9, INVALID_VERSION, INVALID_VERSION) \
305
+ XX(10, INVALID_HEADER_TOKEN, INVALID_HEADER_TOKEN) \
306
+ XX(11, INVALID_CONTENT_LENGTH, INVALID_CONTENT_LENGTH) \
307
+ XX(12, INVALID_CHUNK_SIZE, INVALID_CHUNK_SIZE) \
308
+ XX(13, INVALID_STATUS, INVALID_STATUS) \
309
+ XX(14, INVALID_EOF_STATE, INVALID_EOF_STATE) \
310
+ XX(15, INVALID_TRANSFER_ENCODING, INVALID_TRANSFER_ENCODING) \
311
+ XX(16, CB_MESSAGE_BEGIN, CB_MESSAGE_BEGIN) \
312
+ XX(17, CB_HEADERS_COMPLETE, CB_HEADERS_COMPLETE) \
313
+ XX(18, CB_MESSAGE_COMPLETE, CB_MESSAGE_COMPLETE) \
314
+ XX(19, CB_CHUNK_HEADER, CB_CHUNK_HEADER) \
315
+ XX(20, CB_CHUNK_COMPLETE, CB_CHUNK_COMPLETE) \
316
+ XX(21, PAUSED, PAUSED) \
317
+ XX(22, PAUSED_UPGRADE, PAUSED_UPGRADE) \
318
+ XX(23, PAUSED_H2_UPGRADE, PAUSED_H2_UPGRADE) \
319
+ XX(24, USER, USER) \
320
+ XX(26, CB_URL_COMPLETE, CB_URL_COMPLETE) \
321
+ XX(27, CB_STATUS_COMPLETE, CB_STATUS_COMPLETE) \
322
+ XX(32, CB_METHOD_COMPLETE, CB_METHOD_COMPLETE) \
323
+ XX(33, CB_VERSION_COMPLETE, CB_VERSION_COMPLETE) \
324
+ XX(28, CB_HEADER_FIELD_COMPLETE, CB_HEADER_FIELD_COMPLETE) \
325
+ XX(29, CB_HEADER_VALUE_COMPLETE, CB_HEADER_VALUE_COMPLETE) \
326
+ XX(34, CB_CHUNK_EXTENSION_NAME_COMPLETE, CB_CHUNK_EXTENSION_NAME_COMPLETE) \
327
+ XX(35, CB_CHUNK_EXTENSION_VALUE_COMPLETE, CB_CHUNK_EXTENSION_VALUE_COMPLETE) \
328
+ XX(31, CB_RESET, CB_RESET) \
329
+
330
+
331
+ #define HTTP_METHOD_MAP(XX) \
332
+ XX(0, DELETE, DELETE) \
333
+ XX(1, GET, GET) \
334
+ XX(2, HEAD, HEAD) \
335
+ XX(3, POST, POST) \
336
+ XX(4, PUT, PUT) \
337
+ XX(5, CONNECT, CONNECT) \
338
+ XX(6, OPTIONS, OPTIONS) \
339
+ XX(7, TRACE, TRACE) \
340
+ XX(8, COPY, COPY) \
341
+ XX(9, LOCK, LOCK) \
342
+ XX(10, MKCOL, MKCOL) \
343
+ XX(11, MOVE, MOVE) \
344
+ XX(12, PROPFIND, PROPFIND) \
345
+ XX(13, PROPPATCH, PROPPATCH) \
346
+ XX(14, SEARCH, SEARCH) \
347
+ XX(15, UNLOCK, UNLOCK) \
348
+ XX(16, BIND, BIND) \
349
+ XX(17, REBIND, REBIND) \
350
+ XX(18, UNBIND, UNBIND) \
351
+ XX(19, ACL, ACL) \
352
+ XX(20, REPORT, REPORT) \
353
+ XX(21, MKACTIVITY, MKACTIVITY) \
354
+ XX(22, CHECKOUT, CHECKOUT) \
355
+ XX(23, MERGE, MERGE) \
356
+ XX(24, MSEARCH, M-SEARCH) \
357
+ XX(25, NOTIFY, NOTIFY) \
358
+ XX(26, SUBSCRIBE, SUBSCRIBE) \
359
+ XX(27, UNSUBSCRIBE, UNSUBSCRIBE) \
360
+ XX(28, PATCH, PATCH) \
361
+ XX(29, PURGE, PURGE) \
362
+ XX(30, MKCALENDAR, MKCALENDAR) \
363
+ XX(31, LINK, LINK) \
364
+ XX(32, UNLINK, UNLINK) \
365
+ XX(33, SOURCE, SOURCE) \
366
+ XX(46, QUERY, QUERY) \
367
+
368
+
369
+ #define RTSP_METHOD_MAP(XX) \
370
+ XX(1, GET, GET) \
371
+ XX(3, POST, POST) \
372
+ XX(6, OPTIONS, OPTIONS) \
373
+ XX(35, DESCRIBE, DESCRIBE) \
374
+ XX(36, ANNOUNCE, ANNOUNCE) \
375
+ XX(37, SETUP, SETUP) \
376
+ XX(38, PLAY, PLAY) \
377
+ XX(39, PAUSE, PAUSE) \
378
+ XX(40, TEARDOWN, TEARDOWN) \
379
+ XX(41, GET_PARAMETER, GET_PARAMETER) \
380
+ XX(42, SET_PARAMETER, SET_PARAMETER) \
381
+ XX(43, REDIRECT, REDIRECT) \
382
+ XX(44, RECORD, RECORD) \
383
+ XX(45, FLUSH, FLUSH) \
384
+
385
+
386
+ #define HTTP_ALL_METHOD_MAP(XX) \
387
+ XX(0, DELETE, DELETE) \
388
+ XX(1, GET, GET) \
389
+ XX(2, HEAD, HEAD) \
390
+ XX(3, POST, POST) \
391
+ XX(4, PUT, PUT) \
392
+ XX(5, CONNECT, CONNECT) \
393
+ XX(6, OPTIONS, OPTIONS) \
394
+ XX(7, TRACE, TRACE) \
395
+ XX(8, COPY, COPY) \
396
+ XX(9, LOCK, LOCK) \
397
+ XX(10, MKCOL, MKCOL) \
398
+ XX(11, MOVE, MOVE) \
399
+ XX(12, PROPFIND, PROPFIND) \
400
+ XX(13, PROPPATCH, PROPPATCH) \
401
+ XX(14, SEARCH, SEARCH) \
402
+ XX(15, UNLOCK, UNLOCK) \
403
+ XX(16, BIND, BIND) \
404
+ XX(17, REBIND, REBIND) \
405
+ XX(18, UNBIND, UNBIND) \
406
+ XX(19, ACL, ACL) \
407
+ XX(20, REPORT, REPORT) \
408
+ XX(21, MKACTIVITY, MKACTIVITY) \
409
+ XX(22, CHECKOUT, CHECKOUT) \
410
+ XX(23, MERGE, MERGE) \
411
+ XX(24, MSEARCH, M-SEARCH) \
412
+ XX(25, NOTIFY, NOTIFY) \
413
+ XX(26, SUBSCRIBE, SUBSCRIBE) \
414
+ XX(27, UNSUBSCRIBE, UNSUBSCRIBE) \
415
+ XX(28, PATCH, PATCH) \
416
+ XX(29, PURGE, PURGE) \
417
+ XX(30, MKCALENDAR, MKCALENDAR) \
418
+ XX(31, LINK, LINK) \
419
+ XX(32, UNLINK, UNLINK) \
420
+ XX(33, SOURCE, SOURCE) \
421
+ XX(34, PRI, PRI) \
422
+ XX(35, DESCRIBE, DESCRIBE) \
423
+ XX(36, ANNOUNCE, ANNOUNCE) \
424
+ XX(37, SETUP, SETUP) \
425
+ XX(38, PLAY, PLAY) \
426
+ XX(39, PAUSE, PAUSE) \
427
+ XX(40, TEARDOWN, TEARDOWN) \
428
+ XX(41, GET_PARAMETER, GET_PARAMETER) \
429
+ XX(42, SET_PARAMETER, SET_PARAMETER) \
430
+ XX(43, REDIRECT, REDIRECT) \
431
+ XX(44, RECORD, RECORD) \
432
+ XX(45, FLUSH, FLUSH) \
433
+ XX(46, QUERY, QUERY) \
434
+
435
+
436
+ #define HTTP_STATUS_MAP(XX) \
437
+ XX(100, CONTINUE, CONTINUE) \
438
+ XX(101, SWITCHING_PROTOCOLS, SWITCHING_PROTOCOLS) \
439
+ XX(102, PROCESSING, PROCESSING) \
440
+ XX(103, EARLY_HINTS, EARLY_HINTS) \
441
+ XX(110, RESPONSE_IS_STALE, RESPONSE_IS_STALE) \
442
+ XX(111, REVALIDATION_FAILED, REVALIDATION_FAILED) \
443
+ XX(112, DISCONNECTED_OPERATION, DISCONNECTED_OPERATION) \
444
+ XX(113, HEURISTIC_EXPIRATION, HEURISTIC_EXPIRATION) \
445
+ XX(199, MISCELLANEOUS_WARNING, MISCELLANEOUS_WARNING) \
446
+ XX(200, OK, OK) \
447
+ XX(201, CREATED, CREATED) \
448
+ XX(202, ACCEPTED, ACCEPTED) \
449
+ XX(203, NON_AUTHORITATIVE_INFORMATION, NON_AUTHORITATIVE_INFORMATION) \
450
+ XX(204, NO_CONTENT, NO_CONTENT) \
451
+ XX(205, RESET_CONTENT, RESET_CONTENT) \
452
+ XX(206, PARTIAL_CONTENT, PARTIAL_CONTENT) \
453
+ XX(207, MULTI_STATUS, MULTI_STATUS) \
454
+ XX(208, ALREADY_REPORTED, ALREADY_REPORTED) \
455
+ XX(214, TRANSFORMATION_APPLIED, TRANSFORMATION_APPLIED) \
456
+ XX(226, IM_USED, IM_USED) \
457
+ XX(299, MISCELLANEOUS_PERSISTENT_WARNING, MISCELLANEOUS_PERSISTENT_WARNING) \
458
+ XX(300, MULTIPLE_CHOICES, MULTIPLE_CHOICES) \
459
+ XX(301, MOVED_PERMANENTLY, MOVED_PERMANENTLY) \
460
+ XX(302, FOUND, FOUND) \
461
+ XX(303, SEE_OTHER, SEE_OTHER) \
462
+ XX(304, NOT_MODIFIED, NOT_MODIFIED) \
463
+ XX(305, USE_PROXY, USE_PROXY) \
464
+ XX(306, SWITCH_PROXY, SWITCH_PROXY) \
465
+ XX(307, TEMPORARY_REDIRECT, TEMPORARY_REDIRECT) \
466
+ XX(308, PERMANENT_REDIRECT, PERMANENT_REDIRECT) \
467
+ XX(400, BAD_REQUEST, BAD_REQUEST) \
468
+ XX(401, UNAUTHORIZED, UNAUTHORIZED) \
469
+ XX(402, PAYMENT_REQUIRED, PAYMENT_REQUIRED) \
470
+ XX(403, FORBIDDEN, FORBIDDEN) \
471
+ XX(404, NOT_FOUND, NOT_FOUND) \
472
+ XX(405, METHOD_NOT_ALLOWED, METHOD_NOT_ALLOWED) \
473
+ XX(406, NOT_ACCEPTABLE, NOT_ACCEPTABLE) \
474
+ XX(407, PROXY_AUTHENTICATION_REQUIRED, PROXY_AUTHENTICATION_REQUIRED) \
475
+ XX(408, REQUEST_TIMEOUT, REQUEST_TIMEOUT) \
476
+ XX(409, CONFLICT, CONFLICT) \
477
+ XX(410, GONE, GONE) \
478
+ XX(411, LENGTH_REQUIRED, LENGTH_REQUIRED) \
479
+ XX(412, PRECONDITION_FAILED, PRECONDITION_FAILED) \
480
+ XX(413, PAYLOAD_TOO_LARGE, PAYLOAD_TOO_LARGE) \
481
+ XX(414, URI_TOO_LONG, URI_TOO_LONG) \
482
+ XX(415, UNSUPPORTED_MEDIA_TYPE, UNSUPPORTED_MEDIA_TYPE) \
483
+ XX(416, RANGE_NOT_SATISFIABLE, RANGE_NOT_SATISFIABLE) \
484
+ XX(417, EXPECTATION_FAILED, EXPECTATION_FAILED) \
485
+ XX(418, IM_A_TEAPOT, IM_A_TEAPOT) \
486
+ XX(419, PAGE_EXPIRED, PAGE_EXPIRED) \
487
+ XX(420, ENHANCE_YOUR_CALM, ENHANCE_YOUR_CALM) \
488
+ XX(421, MISDIRECTED_REQUEST, MISDIRECTED_REQUEST) \
489
+ XX(422, UNPROCESSABLE_ENTITY, UNPROCESSABLE_ENTITY) \
490
+ XX(423, LOCKED, LOCKED) \
491
+ XX(424, FAILED_DEPENDENCY, FAILED_DEPENDENCY) \
492
+ XX(425, TOO_EARLY, TOO_EARLY) \
493
+ XX(426, UPGRADE_REQUIRED, UPGRADE_REQUIRED) \
494
+ XX(428, PRECONDITION_REQUIRED, PRECONDITION_REQUIRED) \
495
+ XX(429, TOO_MANY_REQUESTS, TOO_MANY_REQUESTS) \
496
+ XX(430, REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL, REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL) \
497
+ XX(431, REQUEST_HEADER_FIELDS_TOO_LARGE, REQUEST_HEADER_FIELDS_TOO_LARGE) \
498
+ XX(440, LOGIN_TIMEOUT, LOGIN_TIMEOUT) \
499
+ XX(444, NO_RESPONSE, NO_RESPONSE) \
500
+ XX(449, RETRY_WITH, RETRY_WITH) \
501
+ XX(450, BLOCKED_BY_PARENTAL_CONTROL, BLOCKED_BY_PARENTAL_CONTROL) \
502
+ XX(451, UNAVAILABLE_FOR_LEGAL_REASONS, UNAVAILABLE_FOR_LEGAL_REASONS) \
503
+ XX(460, CLIENT_CLOSED_LOAD_BALANCED_REQUEST, CLIENT_CLOSED_LOAD_BALANCED_REQUEST) \
504
+ XX(463, INVALID_X_FORWARDED_FOR, INVALID_X_FORWARDED_FOR) \
505
+ XX(494, REQUEST_HEADER_TOO_LARGE, REQUEST_HEADER_TOO_LARGE) \
506
+ XX(495, SSL_CERTIFICATE_ERROR, SSL_CERTIFICATE_ERROR) \
507
+ XX(496, SSL_CERTIFICATE_REQUIRED, SSL_CERTIFICATE_REQUIRED) \
508
+ XX(497, HTTP_REQUEST_SENT_TO_HTTPS_PORT, HTTP_REQUEST_SENT_TO_HTTPS_PORT) \
509
+ XX(498, INVALID_TOKEN, INVALID_TOKEN) \
510
+ XX(499, CLIENT_CLOSED_REQUEST, CLIENT_CLOSED_REQUEST) \
511
+ XX(500, INTERNAL_SERVER_ERROR, INTERNAL_SERVER_ERROR) \
512
+ XX(501, NOT_IMPLEMENTED, NOT_IMPLEMENTED) \
513
+ XX(502, BAD_GATEWAY, BAD_GATEWAY) \
514
+ XX(503, SERVICE_UNAVAILABLE, SERVICE_UNAVAILABLE) \
515
+ XX(504, GATEWAY_TIMEOUT, GATEWAY_TIMEOUT) \
516
+ XX(505, HTTP_VERSION_NOT_SUPPORTED, HTTP_VERSION_NOT_SUPPORTED) \
517
+ XX(506, VARIANT_ALSO_NEGOTIATES, VARIANT_ALSO_NEGOTIATES) \
518
+ XX(507, INSUFFICIENT_STORAGE, INSUFFICIENT_STORAGE) \
519
+ XX(508, LOOP_DETECTED, LOOP_DETECTED) \
520
+ XX(509, BANDWIDTH_LIMIT_EXCEEDED, BANDWIDTH_LIMIT_EXCEEDED) \
521
+ XX(510, NOT_EXTENDED, NOT_EXTENDED) \
522
+ XX(511, NETWORK_AUTHENTICATION_REQUIRED, NETWORK_AUTHENTICATION_REQUIRED) \
523
+ XX(520, WEB_SERVER_UNKNOWN_ERROR, WEB_SERVER_UNKNOWN_ERROR) \
524
+ XX(521, WEB_SERVER_IS_DOWN, WEB_SERVER_IS_DOWN) \
525
+ XX(522, CONNECTION_TIMEOUT, CONNECTION_TIMEOUT) \
526
+ XX(523, ORIGIN_IS_UNREACHABLE, ORIGIN_IS_UNREACHABLE) \
527
+ XX(524, TIMEOUT_OCCURED, TIMEOUT_OCCURED) \
528
+ XX(525, SSL_HANDSHAKE_FAILED, SSL_HANDSHAKE_FAILED) \
529
+ XX(526, INVALID_SSL_CERTIFICATE, INVALID_SSL_CERTIFICATE) \
530
+ XX(527, RAILGUN_ERROR, RAILGUN_ERROR) \
531
+ XX(529, SITE_IS_OVERLOADED, SITE_IS_OVERLOADED) \
532
+ XX(530, SITE_IS_FROZEN, SITE_IS_FROZEN) \
533
+ XX(561, IDENTITY_PROVIDER_AUTHENTICATION_ERROR, IDENTITY_PROVIDER_AUTHENTICATION_ERROR) \
534
+ XX(598, NETWORK_READ_TIMEOUT, NETWORK_READ_TIMEOUT) \
535
+ XX(599, NETWORK_CONNECT_TIMEOUT, NETWORK_CONNECT_TIMEOUT) \
536
+
537
+
538
+ #ifdef __cplusplus
539
+ } /* extern "C" */
540
+ #endif
541
+ #endif /* LLLLHTTP_C_HEADERS_ */
542
+
543
+
544
+ #ifndef INCLUDE_LLHTTP_API_H_
545
+ #define INCLUDE_LLHTTP_API_H_
546
+ #ifdef __cplusplus
547
+ extern "C" {
548
+ #endif
549
+ #include <stddef.h>
550
+
551
+ #define LLHTTP_EXPORT
552
+
553
+ typedef llhttp__internal_t llhttp_t;
554
+ typedef struct llhttp_settings_s llhttp_settings_t;
555
+
556
+ typedef int (*llhttp_data_cb)(llhttp_t*, const char *at, size_t length);
557
+ typedef int (*llhttp_cb)(llhttp_t*);
558
+
559
+ struct llhttp_settings_s {
560
+ /* Possible return values 0, -1, `HPE_PAUSED` */
561
+ llhttp_cb on_message_begin;
562
+
563
+ /* Possible return values 0, -1, HPE_USER */
564
+ llhttp_data_cb on_url;
565
+ llhttp_data_cb on_status;
566
+ llhttp_data_cb on_method;
567
+ llhttp_data_cb on_version;
568
+ llhttp_data_cb on_header_field;
569
+ llhttp_data_cb on_header_value;
570
+ llhttp_data_cb on_chunk_extension_name;
571
+ llhttp_data_cb on_chunk_extension_value;
572
+
573
+ /* Possible return values:
574
+ * 0 - Proceed normally
575
+ * 1 - Assume that request/response has no body, and proceed to parsing the
576
+ * next message
577
+ * 2 - Assume absence of body (as above) and make `llhttp_execute()` return
578
+ * `HPE_PAUSED_UPGRADE`
579
+ * -1 - Error
580
+ * `HPE_PAUSED`
581
+ */
582
+ llhttp_cb on_headers_complete;
583
+
584
+ /* Possible return values 0, -1, HPE_USER */
585
+ llhttp_data_cb on_body;
586
+
587
+ /* Possible return values 0, -1, `HPE_PAUSED` */
588
+ llhttp_cb on_message_complete;
589
+ llhttp_cb on_url_complete;
590
+ llhttp_cb on_status_complete;
591
+ llhttp_cb on_method_complete;
592
+ llhttp_cb on_version_complete;
593
+ llhttp_cb on_header_field_complete;
594
+ llhttp_cb on_header_value_complete;
595
+ llhttp_cb on_chunk_extension_name_complete;
596
+ llhttp_cb on_chunk_extension_value_complete;
597
+
598
+ /* When on_chunk_header is called, the current chunk length is stored
599
+ * in parser->content_length.
600
+ * Possible return values 0, -1, `HPE_PAUSED`
601
+ */
602
+ llhttp_cb on_chunk_header;
603
+ llhttp_cb on_chunk_complete;
604
+ llhttp_cb on_reset;
605
+ };
606
+
607
+ /* Initialize the parser with specific type and user settings.
608
+ *
609
+ * NOTE: lifetime of `settings` has to be at least the same as the lifetime of
610
+ * the `parser` here. In practice, `settings` has to be either a static
611
+ * variable or be allocated with `malloc`, `new`, etc.
612
+ */
613
+ LLHTTP_EXPORT
614
+ void llhttp_init(llhttp_t* parser, llhttp_type_t type,
615
+ const llhttp_settings_t* settings);
616
+
617
+ LLHTTP_EXPORT
618
+ llhttp_t* llhttp_alloc(llhttp_type_t type);
619
+
620
+ LLHTTP_EXPORT
621
+ void llhttp_free(llhttp_t* parser);
622
+
623
+ LLHTTP_EXPORT
624
+ uint8_t llhttp_get_type(llhttp_t* parser);
625
+
626
+ LLHTTP_EXPORT
627
+ uint8_t llhttp_get_http_major(llhttp_t* parser);
628
+
629
+ LLHTTP_EXPORT
630
+ uint8_t llhttp_get_http_minor(llhttp_t* parser);
631
+
632
+ LLHTTP_EXPORT
633
+ uint8_t llhttp_get_method(llhttp_t* parser);
634
+
635
+ LLHTTP_EXPORT
636
+ int llhttp_get_status_code(llhttp_t* parser);
637
+
638
+ LLHTTP_EXPORT
639
+ uint8_t llhttp_get_upgrade(llhttp_t* parser);
640
+
641
+ /* Reset an already initialized parser back to the start state, preserving the
642
+ * existing parser type, callback settings, user data, and lenient flags.
643
+ */
644
+ LLHTTP_EXPORT
645
+ void llhttp_reset(llhttp_t* parser);
646
+
647
+ /* Initialize the settings object */
648
+ LLHTTP_EXPORT
649
+ void llhttp_settings_init(llhttp_settings_t* settings);
650
+
651
+ /* Parse full or partial request/response, invoking user callbacks along the
652
+ * way.
653
+ *
654
+ * If any of `llhttp_data_cb` returns errno not equal to `HPE_OK` - the parsing
655
+ * interrupts, and such errno is returned from `llhttp_execute()`. If
656
+ * `HPE_PAUSED` was used as a errno, the execution can be resumed with
657
+ * `llhttp_resume()` call.
658
+ *
659
+ * In a special case of CONNECT/Upgrade request/response `HPE_PAUSED_UPGRADE`
660
+ * is returned after fully parsing the request/response. If the user wishes to
661
+ * continue parsing, they need to invoke `llhttp_resume_after_upgrade()`.
662
+ *
663
+ * NOTE: if this function ever returns a non-pause type error, it will continue
664
+ * to return the same error upon each successive call up until `llhttp_init()`
665
+ * is called.
666
+ */
667
+ LLHTTP_EXPORT
668
+ llhttp_errno_t llhttp_execute(llhttp_t* parser, const char* data, size_t len);
669
+
670
+ /* This method should be called when the other side has no further bytes to
671
+ * send (e.g. shutdown of readable side of the TCP connection.)
672
+ *
673
+ * Requests without `Content-Length` and other messages might require treating
674
+ * all incoming bytes as the part of the body, up to the last byte of the
675
+ * connection. This method will invoke `on_message_complete()` callback if the
676
+ * request was terminated safely. Otherwise a error code would be returned.
677
+ */
678
+ LLHTTP_EXPORT
679
+ llhttp_errno_t llhttp_finish(llhttp_t* parser);
680
+
681
+ /* Returns `1` if the incoming message is parsed until the last byte, and has
682
+ * to be completed by calling `llhttp_finish()` on EOF
683
+ */
684
+ LLHTTP_EXPORT
685
+ int llhttp_message_needs_eof(const llhttp_t* parser);
686
+
687
+ /* Returns `1` if there might be any other messages following the last that was
688
+ * successfully parsed.
689
+ */
690
+ LLHTTP_EXPORT
691
+ int llhttp_should_keep_alive(const llhttp_t* parser);
692
+
693
+ /* Make further calls of `llhttp_execute()` return `HPE_PAUSED` and set
694
+ * appropriate error reason.
695
+ *
696
+ * Important: do not call this from user callbacks! User callbacks must return
697
+ * `HPE_PAUSED` if pausing is required.
698
+ */
699
+ LLHTTP_EXPORT
700
+ void llhttp_pause(llhttp_t* parser);
701
+
702
+ /* Might be called to resume the execution after the pause in user's callback.
703
+ * See `llhttp_execute()` above for details.
704
+ *
705
+ * Call this only if `llhttp_execute()` returns `HPE_PAUSED`.
706
+ */
707
+ LLHTTP_EXPORT
708
+ void llhttp_resume(llhttp_t* parser);
709
+
710
+ /* Might be called to resume the execution after the pause in user's callback.
711
+ * See `llhttp_execute()` above for details.
712
+ *
713
+ * Call this only if `llhttp_execute()` returns `HPE_PAUSED_UPGRADE`
714
+ */
715
+ LLHTTP_EXPORT
716
+ void llhttp_resume_after_upgrade(llhttp_t* parser);
717
+
718
+ /* Returns the latest return error */
719
+ LLHTTP_EXPORT
720
+ llhttp_errno_t llhttp_get_errno(const llhttp_t* parser);
721
+
722
+ /* Returns the verbal explanation of the latest returned error.
723
+ *
724
+ * Note: User callback should set error reason when returning the error. See
725
+ * `llhttp_set_error_reason()` for details.
726
+ */
727
+ LLHTTP_EXPORT
728
+ const char* llhttp_get_error_reason(const llhttp_t* parser);
729
+
730
+ /* Assign verbal description to the returned error. Must be called in user
731
+ * callbacks right before returning the errno.
732
+ *
733
+ * Note: `HPE_USER` error code might be useful in user callbacks.
734
+ */
735
+ LLHTTP_EXPORT
736
+ void llhttp_set_error_reason(llhttp_t* parser, const char* reason);
737
+
738
+ /* Returns the pointer to the last parsed byte before the returned error. The
739
+ * pointer is relative to the `data` argument of `llhttp_execute()`.
740
+ *
741
+ * Note: this method might be useful for counting the number of parsed bytes.
742
+ */
743
+ LLHTTP_EXPORT
744
+ const char* llhttp_get_error_pos(const llhttp_t* parser);
745
+
746
+ /* Returns textual name of error code */
747
+ LLHTTP_EXPORT
748
+ const char* llhttp_errno_name(llhttp_errno_t err);
749
+
750
+ /* Returns textual name of HTTP method */
751
+ LLHTTP_EXPORT
752
+ const char* llhttp_method_name(llhttp_method_t method);
753
+
754
+ /* Returns textual name of HTTP status */
755
+ LLHTTP_EXPORT
756
+ const char* llhttp_status_name(llhttp_status_t status);
757
+
758
+ /* Enables/disables lenient header value parsing (disabled by default).
759
+ *
760
+ * Lenient parsing disables header value token checks, extending llhttp's
761
+ * protocol support to highly non-compliant clients/server. No
762
+ * `HPE_INVALID_HEADER_TOKEN` will be raised for incorrect header values when
763
+ * lenient parsing is "on".
764
+ *
765
+ * **Enabling this flag can pose a security issue since you will be exposed to
766
+ * request smuggling attacks. USE WITH CAUTION!**
767
+ */
768
+ LLHTTP_EXPORT
769
+ void llhttp_set_lenient_headers(llhttp_t* parser, int enabled);
770
+
771
+
772
+ /* Enables/disables lenient handling of conflicting `Transfer-Encoding` and
773
+ * `Content-Length` headers (disabled by default).
774
+ *
775
+ * Normally `llhttp` would error when `Transfer-Encoding` is present in
776
+ * conjunction with `Content-Length`. This error is important to prevent HTTP
777
+ * request smuggling, but may be less desirable for small number of cases
778
+ * involving legacy servers.
779
+ *
780
+ * **Enabling this flag can pose a security issue since you will be exposed to
781
+ * request smuggling attacks. USE WITH CAUTION!**
782
+ */
783
+ LLHTTP_EXPORT
784
+ void llhttp_set_lenient_chunked_length(llhttp_t* parser, int enabled);
785
+
786
+
787
+ /* Enables/disables lenient handling of `Connection: close` and HTTP/1.0
788
+ * requests responses.
789
+ *
790
+ * Normally `llhttp` would error on (in strict mode) or discard (in loose mode)
791
+ * the HTTP request/response after the request/response with `Connection: close`
792
+ * and `Content-Length`. This is important to prevent cache poisoning attacks,
793
+ * but might interact badly with outdated and insecure clients. With this flag
794
+ * the extra request/response will be parsed normally.
795
+ *
796
+ * **Enabling this flag can pose a security issue since you will be exposed to
797
+ * poisoning attacks. USE WITH CAUTION!**
798
+ */
799
+ LLHTTP_EXPORT
800
+ void llhttp_set_lenient_keep_alive(llhttp_t* parser, int enabled);
801
+
802
+ /* Enables/disables lenient handling of `Transfer-Encoding` header.
803
+ *
804
+ * Normally `llhttp` would error when a `Transfer-Encoding` has `chunked` value
805
+ * and another value after it (either in a single header or in multiple
806
+ * headers whose value are internally joined using `, `).
807
+ * This is mandated by the spec to reliably determine request body size and thus
808
+ * avoid request smuggling.
809
+ * With this flag the extra value will be parsed normally.
810
+ *
811
+ * **Enabling this flag can pose a security issue since you will be exposed to
812
+ * request smuggling attacks. USE WITH CAUTION!**
813
+ */
814
+ LLHTTP_EXPORT
815
+ void llhttp_set_lenient_transfer_encoding(llhttp_t* parser, int enabled);
816
+
817
+ /* Enables/disables lenient handling of HTTP version.
818
+ *
819
+ * Normally `llhttp` would error when the HTTP version in the request or status line
820
+ * is not `0.9`, `1.0`, `1.1` or `2.0`.
821
+ * With this flag the invalid value will be parsed normally.
822
+ *
823
+ * **Enabling this flag can pose a security issue since you will allow unsupported
824
+ * HTTP versions. USE WITH CAUTION!**
825
+ */
826
+ LLHTTP_EXPORT
827
+ void llhttp_set_lenient_version(llhttp_t* parser, int enabled);
828
+
829
+ /* Enables/disables lenient handling of additional data received after a message ends
830
+ * and keep-alive is disabled.
831
+ *
832
+ * Normally `llhttp` would error when additional unexpected data is received if the message
833
+ * contains the `Connection` header with `close` value.
834
+ * With this flag the extra data will discarded without throwing an error.
835
+ *
836
+ * **Enabling this flag can pose a security issue since you will be exposed to
837
+ * poisoning attacks. USE WITH CAUTION!**
838
+ */
839
+ LLHTTP_EXPORT
840
+ void llhttp_set_lenient_data_after_close(llhttp_t* parser, int enabled);
841
+
842
+ /* Enables/disables lenient handling of incomplete CRLF sequences.
843
+ *
844
+ * Normally `llhttp` would error when a CR is not followed by LF when terminating the
845
+ * request line, the status line, the headers or a chunk header.
846
+ * With this flag only a CR is required to terminate such sections.
847
+ *
848
+ * **Enabling this flag can pose a security issue since you will be exposed to
849
+ * request smuggling attacks. USE WITH CAUTION!**
850
+ */
851
+ LLHTTP_EXPORT
852
+ void llhttp_set_lenient_optional_lf_after_cr(llhttp_t* parser, int enabled);
853
+
854
+ /*
855
+ * Enables/disables lenient handling of line separators.
856
+ *
857
+ * Normally `llhttp` would error when a LF is not preceded by CR when terminating the
858
+ * request line, the status line, the headers, a chunk header or a chunk data.
859
+ * With this flag only a LF is required to terminate such sections.
860
+ *
861
+ * **Enabling this flag can pose a security issue since you will be exposed to
862
+ * request smuggling attacks. USE WITH CAUTION!**
863
+ */
864
+ LLHTTP_EXPORT
865
+ void llhttp_set_lenient_optional_cr_before_lf(llhttp_t* parser, int enabled);
866
+
867
+ /* Enables/disables lenient handling of chunks not separated via CRLF.
868
+ *
869
+ * Normally `llhttp` would error when after a chunk data a CRLF is missing before
870
+ * starting a new chunk.
871
+ * With this flag the new chunk can start immediately after the previous one.
872
+ *
873
+ * **Enabling this flag can pose a security issue since you will be exposed to
874
+ * request smuggling attacks. USE WITH CAUTION!**
875
+ */
876
+ LLHTTP_EXPORT
877
+ void llhttp_set_lenient_optional_crlf_after_chunk(llhttp_t* parser, int enabled);
878
+
879
+ /* Enables/disables lenient handling of spaces after chunk size.
880
+ *
881
+ * Normally `llhttp` would error when after a chunk size is followed by one or more
882
+ * spaces are present instead of a CRLF or `;`.
883
+ * With this flag this check is disabled.
884
+ *
885
+ * **Enabling this flag can pose a security issue since you will be exposed to
886
+ * request smuggling attacks. USE WITH CAUTION!**
887
+ */
888
+ LLHTTP_EXPORT
889
+ void llhttp_set_lenient_spaces_after_chunk_size(llhttp_t* parser, int enabled);
890
+
891
+ #ifdef __cplusplus
892
+ } /* extern "C" */
893
+ #endif
894
+ #endif /* INCLUDE_LLHTTP_API_H_ */
895
+
896
+
897
+ #endif /* INCLUDE_LLHTTP_H_ */