racer 0.1.3

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 (336) hide show
  1. data/LICENSE +22 -0
  2. data/bin/racer +33 -0
  3. data/ext/libuv/AUTHORS +45 -0
  4. data/ext/libuv/LICENSE +42 -0
  5. data/ext/libuv/Makefile +119 -0
  6. data/ext/libuv/README.md +88 -0
  7. data/ext/libuv/build/gcc_version.py +20 -0
  8. data/ext/libuv/common.gypi +176 -0
  9. data/ext/libuv/config-mingw.mk +61 -0
  10. data/ext/libuv/config-unix.mk +171 -0
  11. data/ext/libuv/gyp_uv +64 -0
  12. data/ext/libuv/include/ares.h +591 -0
  13. data/ext/libuv/include/ares_version.h +24 -0
  14. data/ext/libuv/include/uv-private/eio.h +403 -0
  15. data/ext/libuv/include/uv-private/ev.h +838 -0
  16. data/ext/libuv/include/uv-private/ngx-queue.h +108 -0
  17. data/ext/libuv/include/uv-private/tree.h +768 -0
  18. data/ext/libuv/include/uv-private/uv-unix.h +310 -0
  19. data/ext/libuv/include/uv-private/uv-win.h +510 -0
  20. data/ext/libuv/include/uv.h +1796 -0
  21. data/ext/libuv/src/ares/AUTHORS +37 -0
  22. data/ext/libuv/src/ares/CHANGES +1218 -0
  23. data/ext/libuv/src/ares/CMakeLists.txt +22 -0
  24. data/ext/libuv/src/ares/NEWS +21 -0
  25. data/ext/libuv/src/ares/README +60 -0
  26. data/ext/libuv/src/ares/README.cares +13 -0
  27. data/ext/libuv/src/ares/README.msvc +142 -0
  28. data/ext/libuv/src/ares/README.node +21 -0
  29. data/ext/libuv/src/ares/RELEASE-NOTES +26 -0
  30. data/ext/libuv/src/ares/TODO +23 -0
  31. data/ext/libuv/src/ares/ares__close_sockets.c +66 -0
  32. data/ext/libuv/src/ares/ares__get_hostent.c +263 -0
  33. data/ext/libuv/src/ares/ares__read_line.c +71 -0
  34. data/ext/libuv/src/ares/ares__timeval.c +111 -0
  35. data/ext/libuv/src/ares/ares_cancel.c +63 -0
  36. data/ext/libuv/src/ares/ares_data.c +190 -0
  37. data/ext/libuv/src/ares/ares_data.h +65 -0
  38. data/ext/libuv/src/ares/ares_destroy.c +105 -0
  39. data/ext/libuv/src/ares/ares_dns.h +90 -0
  40. data/ext/libuv/src/ares/ares_expand_name.c +200 -0
  41. data/ext/libuv/src/ares/ares_expand_string.c +75 -0
  42. data/ext/libuv/src/ares/ares_fds.c +63 -0
  43. data/ext/libuv/src/ares/ares_free_hostent.c +42 -0
  44. data/ext/libuv/src/ares/ares_free_string.c +25 -0
  45. data/ext/libuv/src/ares/ares_getenv.c +30 -0
  46. data/ext/libuv/src/ares/ares_getenv.h +26 -0
  47. data/ext/libuv/src/ares/ares_gethostbyaddr.c +301 -0
  48. data/ext/libuv/src/ares/ares_gethostbyname.c +523 -0
  49. data/ext/libuv/src/ares/ares_getnameinfo.c +427 -0
  50. data/ext/libuv/src/ares/ares_getopt.c +122 -0
  51. data/ext/libuv/src/ares/ares_getopt.h +53 -0
  52. data/ext/libuv/src/ares/ares_getsock.c +72 -0
  53. data/ext/libuv/src/ares/ares_init.c +1809 -0
  54. data/ext/libuv/src/ares/ares_iphlpapi.h +221 -0
  55. data/ext/libuv/src/ares/ares_ipv6.h +78 -0
  56. data/ext/libuv/src/ares/ares_library_init.c +142 -0
  57. data/ext/libuv/src/ares/ares_library_init.h +42 -0
  58. data/ext/libuv/src/ares/ares_llist.c +86 -0
  59. data/ext/libuv/src/ares/ares_llist.h +42 -0
  60. data/ext/libuv/src/ares/ares_mkquery.c +195 -0
  61. data/ext/libuv/src/ares/ares_nowarn.c +181 -0
  62. data/ext/libuv/src/ares/ares_nowarn.h +55 -0
  63. data/ext/libuv/src/ares/ares_options.c +248 -0
  64. data/ext/libuv/src/ares/ares_parse_a_reply.c +263 -0
  65. data/ext/libuv/src/ares/ares_parse_aaaa_reply.c +259 -0
  66. data/ext/libuv/src/ares/ares_parse_mx_reply.c +170 -0
  67. data/ext/libuv/src/ares/ares_parse_ns_reply.c +182 -0
  68. data/ext/libuv/src/ares/ares_parse_ptr_reply.c +217 -0
  69. data/ext/libuv/src/ares/ares_parse_srv_reply.c +179 -0
  70. data/ext/libuv/src/ares/ares_parse_txt_reply.c +201 -0
  71. data/ext/libuv/src/ares/ares_platform.c +11035 -0
  72. data/ext/libuv/src/ares/ares_platform.h +43 -0
  73. data/ext/libuv/src/ares/ares_private.h +355 -0
  74. data/ext/libuv/src/ares/ares_process.c +1295 -0
  75. data/ext/libuv/src/ares/ares_query.c +183 -0
  76. data/ext/libuv/src/ares/ares_rules.h +144 -0
  77. data/ext/libuv/src/ares/ares_search.c +321 -0
  78. data/ext/libuv/src/ares/ares_send.c +134 -0
  79. data/ext/libuv/src/ares/ares_setup.h +199 -0
  80. data/ext/libuv/src/ares/ares_strcasecmp.c +66 -0
  81. data/ext/libuv/src/ares/ares_strcasecmp.h +30 -0
  82. data/ext/libuv/src/ares/ares_strdup.c +42 -0
  83. data/ext/libuv/src/ares/ares_strdup.h +26 -0
  84. data/ext/libuv/src/ares/ares_strerror.c +56 -0
  85. data/ext/libuv/src/ares/ares_timeout.c +80 -0
  86. data/ext/libuv/src/ares/ares_version.c +11 -0
  87. data/ext/libuv/src/ares/ares_writev.c +79 -0
  88. data/ext/libuv/src/ares/ares_writev.h +36 -0
  89. data/ext/libuv/src/ares/bitncmp.c +59 -0
  90. data/ext/libuv/src/ares/bitncmp.h +26 -0
  91. data/ext/libuv/src/ares/config_cygwin/ares_config.h +512 -0
  92. data/ext/libuv/src/ares/config_darwin/ares_config.h +512 -0
  93. data/ext/libuv/src/ares/config_freebsd/ares_config.h +512 -0
  94. data/ext/libuv/src/ares/config_linux/ares_config.h +512 -0
  95. data/ext/libuv/src/ares/config_netbsd/ares_config.h +512 -0
  96. data/ext/libuv/src/ares/config_openbsd/ares_config.h +512 -0
  97. data/ext/libuv/src/ares/config_sunos/ares_config.h +512 -0
  98. data/ext/libuv/src/ares/config_win32/ares_config.h +369 -0
  99. data/ext/libuv/src/ares/get_ver.awk +35 -0
  100. data/ext/libuv/src/ares/inet_net_pton.c +451 -0
  101. data/ext/libuv/src/ares/inet_net_pton.h +31 -0
  102. data/ext/libuv/src/ares/inet_ntop.c +208 -0
  103. data/ext/libuv/src/ares/inet_ntop.h +26 -0
  104. data/ext/libuv/src/ares/nameser.h +203 -0
  105. data/ext/libuv/src/ares/setup_once.h +504 -0
  106. data/ext/libuv/src/ares/windows_port.c +22 -0
  107. data/ext/libuv/src/cares.c +225 -0
  108. data/ext/libuv/src/fs-poll.c +237 -0
  109. data/ext/libuv/src/unix/async.c +119 -0
  110. data/ext/libuv/src/unix/core.c +647 -0
  111. data/ext/libuv/src/unix/cygwin.c +84 -0
  112. data/ext/libuv/src/unix/darwin.c +341 -0
  113. data/ext/libuv/src/unix/dl.c +83 -0
  114. data/ext/libuv/src/unix/eio/Changes +63 -0
  115. data/ext/libuv/src/unix/eio/LICENSE +36 -0
  116. data/ext/libuv/src/unix/eio/Makefile.am +15 -0
  117. data/ext/libuv/src/unix/eio/aclocal.m4 +8957 -0
  118. data/ext/libuv/src/unix/eio/autogen.sh +3 -0
  119. data/ext/libuv/src/unix/eio/config.h.in +86 -0
  120. data/ext/libuv/src/unix/eio/config_cygwin.h +80 -0
  121. data/ext/libuv/src/unix/eio/config_darwin.h +141 -0
  122. data/ext/libuv/src/unix/eio/config_freebsd.h +81 -0
  123. data/ext/libuv/src/unix/eio/config_linux.h +94 -0
  124. data/ext/libuv/src/unix/eio/config_netbsd.h +81 -0
  125. data/ext/libuv/src/unix/eio/config_openbsd.h +137 -0
  126. data/ext/libuv/src/unix/eio/config_sunos.h +84 -0
  127. data/ext/libuv/src/unix/eio/configure.ac +22 -0
  128. data/ext/libuv/src/unix/eio/demo.c +194 -0
  129. data/ext/libuv/src/unix/eio/ecb.h +370 -0
  130. data/ext/libuv/src/unix/eio/eio.3 +3428 -0
  131. data/ext/libuv/src/unix/eio/eio.c +2593 -0
  132. data/ext/libuv/src/unix/eio/eio.pod +969 -0
  133. data/ext/libuv/src/unix/eio/libeio.m4 +195 -0
  134. data/ext/libuv/src/unix/eio/xthread.h +164 -0
  135. data/ext/libuv/src/unix/error.c +104 -0
  136. data/ext/libuv/src/unix/ev/Changes +388 -0
  137. data/ext/libuv/src/unix/ev/LICENSE +36 -0
  138. data/ext/libuv/src/unix/ev/Makefile.am +18 -0
  139. data/ext/libuv/src/unix/ev/Makefile.in +771 -0
  140. data/ext/libuv/src/unix/ev/README +58 -0
  141. data/ext/libuv/src/unix/ev/aclocal.m4 +8957 -0
  142. data/ext/libuv/src/unix/ev/autogen.sh +6 -0
  143. data/ext/libuv/src/unix/ev/config.guess +1526 -0
  144. data/ext/libuv/src/unix/ev/config.h.in +125 -0
  145. data/ext/libuv/src/unix/ev/config.sub +1658 -0
  146. data/ext/libuv/src/unix/ev/config_cygwin.h +123 -0
  147. data/ext/libuv/src/unix/ev/config_darwin.h +122 -0
  148. data/ext/libuv/src/unix/ev/config_freebsd.h +120 -0
  149. data/ext/libuv/src/unix/ev/config_linux.h +141 -0
  150. data/ext/libuv/src/unix/ev/config_netbsd.h +120 -0
  151. data/ext/libuv/src/unix/ev/config_openbsd.h +126 -0
  152. data/ext/libuv/src/unix/ev/config_sunos.h +122 -0
  153. data/ext/libuv/src/unix/ev/configure +13037 -0
  154. data/ext/libuv/src/unix/ev/configure.ac +18 -0
  155. data/ext/libuv/src/unix/ev/depcomp +630 -0
  156. data/ext/libuv/src/unix/ev/ev++.h +816 -0
  157. data/ext/libuv/src/unix/ev/ev.3 +5311 -0
  158. data/ext/libuv/src/unix/ev/ev.c +3925 -0
  159. data/ext/libuv/src/unix/ev/ev.pod +5243 -0
  160. data/ext/libuv/src/unix/ev/ev_epoll.c +266 -0
  161. data/ext/libuv/src/unix/ev/ev_kqueue.c +235 -0
  162. data/ext/libuv/src/unix/ev/ev_poll.c +148 -0
  163. data/ext/libuv/src/unix/ev/ev_port.c +179 -0
  164. data/ext/libuv/src/unix/ev/ev_select.c +310 -0
  165. data/ext/libuv/src/unix/ev/ev_vars.h +203 -0
  166. data/ext/libuv/src/unix/ev/ev_win32.c +153 -0
  167. data/ext/libuv/src/unix/ev/ev_wrap.h +196 -0
  168. data/ext/libuv/src/unix/ev/event.c +402 -0
  169. data/ext/libuv/src/unix/ev/event.h +170 -0
  170. data/ext/libuv/src/unix/ev/install-sh +294 -0
  171. data/ext/libuv/src/unix/ev/libev.m4 +39 -0
  172. data/ext/libuv/src/unix/ev/ltmain.sh +8413 -0
  173. data/ext/libuv/src/unix/ev/missing +336 -0
  174. data/ext/libuv/src/unix/ev/mkinstalldirs +111 -0
  175. data/ext/libuv/src/unix/freebsd.c +312 -0
  176. data/ext/libuv/src/unix/fs.c +699 -0
  177. data/ext/libuv/src/unix/internal.h +180 -0
  178. data/ext/libuv/src/unix/kqueue.c +122 -0
  179. data/ext/libuv/src/unix/linux/core.c +474 -0
  180. data/ext/libuv/src/unix/linux/inotify.c +209 -0
  181. data/ext/libuv/src/unix/linux/syscalls.c +268 -0
  182. data/ext/libuv/src/unix/linux/syscalls.h +93 -0
  183. data/ext/libuv/src/unix/loop-watcher.c +63 -0
  184. data/ext/libuv/src/unix/loop.c +81 -0
  185. data/ext/libuv/src/unix/netbsd.c +108 -0
  186. data/ext/libuv/src/unix/openbsd.c +295 -0
  187. data/ext/libuv/src/unix/pipe.c +261 -0
  188. data/ext/libuv/src/unix/poll.c +116 -0
  189. data/ext/libuv/src/unix/process.c +447 -0
  190. data/ext/libuv/src/unix/stream.c +1026 -0
  191. data/ext/libuv/src/unix/sunos.c +483 -0
  192. data/ext/libuv/src/unix/tcp.c +328 -0
  193. data/ext/libuv/src/unix/thread.c +211 -0
  194. data/ext/libuv/src/unix/timer.c +138 -0
  195. data/ext/libuv/src/unix/tty.c +146 -0
  196. data/ext/libuv/src/unix/udp.c +661 -0
  197. data/ext/libuv/src/unix/uv-eio.c +107 -0
  198. data/ext/libuv/src/unix/uv-eio.h +13 -0
  199. data/ext/libuv/src/uv-common.c +384 -0
  200. data/ext/libuv/src/uv-common.h +171 -0
  201. data/ext/libuv/src/win/async.c +130 -0
  202. data/ext/libuv/src/win/core.c +283 -0
  203. data/ext/libuv/src/win/dl.c +86 -0
  204. data/ext/libuv/src/win/error.c +150 -0
  205. data/ext/libuv/src/win/fs-event.c +512 -0
  206. data/ext/libuv/src/win/fs.c +1856 -0
  207. data/ext/libuv/src/win/getaddrinfo.c +365 -0
  208. data/ext/libuv/src/win/handle-inl.h +145 -0
  209. data/ext/libuv/src/win/handle.c +150 -0
  210. data/ext/libuv/src/win/internal.h +337 -0
  211. data/ext/libuv/src/win/loop-watcher.c +123 -0
  212. data/ext/libuv/src/win/pipe.c +1675 -0
  213. data/ext/libuv/src/win/poll.c +618 -0
  214. data/ext/libuv/src/win/process-stdio.c +479 -0
  215. data/ext/libuv/src/win/process.c +1013 -0
  216. data/ext/libuv/src/win/req-inl.h +225 -0
  217. data/ext/libuv/src/win/req.c +25 -0
  218. data/ext/libuv/src/win/stream-inl.h +69 -0
  219. data/ext/libuv/src/win/stream.c +167 -0
  220. data/ext/libuv/src/win/tcp.c +1400 -0
  221. data/ext/libuv/src/win/thread.c +372 -0
  222. data/ext/libuv/src/win/threadpool.c +74 -0
  223. data/ext/libuv/src/win/timer.c +226 -0
  224. data/ext/libuv/src/win/tty.c +1801 -0
  225. data/ext/libuv/src/win/udp.c +718 -0
  226. data/ext/libuv/src/win/util.c +864 -0
  227. data/ext/libuv/src/win/winapi.c +132 -0
  228. data/ext/libuv/src/win/winapi.h +4443 -0
  229. data/ext/libuv/src/win/winsock.c +557 -0
  230. data/ext/libuv/src/win/winsock.h +171 -0
  231. data/ext/libuv/test/benchmark-ares.c +117 -0
  232. data/ext/libuv/test/benchmark-fs-stat.c +164 -0
  233. data/ext/libuv/test/benchmark-getaddrinfo.c +94 -0
  234. data/ext/libuv/test/benchmark-list.h +114 -0
  235. data/ext/libuv/test/benchmark-loop-count.c +88 -0
  236. data/ext/libuv/test/benchmark-million-timers.c +65 -0
  237. data/ext/libuv/test/benchmark-ping-pongs.c +213 -0
  238. data/ext/libuv/test/benchmark-pound.c +324 -0
  239. data/ext/libuv/test/benchmark-pump.c +462 -0
  240. data/ext/libuv/test/benchmark-sizes.c +42 -0
  241. data/ext/libuv/test/benchmark-spawn.c +162 -0
  242. data/ext/libuv/test/benchmark-tcp-write-batch.c +140 -0
  243. data/ext/libuv/test/benchmark-thread.c +64 -0
  244. data/ext/libuv/test/benchmark-udp-packet-storm.c +247 -0
  245. data/ext/libuv/test/blackhole-server.c +118 -0
  246. data/ext/libuv/test/dns-server.c +321 -0
  247. data/ext/libuv/test/echo-server.c +378 -0
  248. data/ext/libuv/test/fixtures/empty_file +0 -0
  249. data/ext/libuv/test/fixtures/load_error.node +1 -0
  250. data/ext/libuv/test/run-benchmarks.c +64 -0
  251. data/ext/libuv/test/run-tests.c +138 -0
  252. data/ext/libuv/test/runner-unix.c +290 -0
  253. data/ext/libuv/test/runner-unix.h +36 -0
  254. data/ext/libuv/test/runner-win.c +285 -0
  255. data/ext/libuv/test/runner-win.h +42 -0
  256. data/ext/libuv/test/runner.c +326 -0
  257. data/ext/libuv/test/runner.h +159 -0
  258. data/ext/libuv/test/task.h +109 -0
  259. data/ext/libuv/test/test-async.c +118 -0
  260. data/ext/libuv/test/test-callback-order.c +76 -0
  261. data/ext/libuv/test/test-callback-stack.c +203 -0
  262. data/ext/libuv/test/test-connection-fail.c +148 -0
  263. data/ext/libuv/test/test-counters-init.c +215 -0
  264. data/ext/libuv/test/test-cwd-and-chdir.c +64 -0
  265. data/ext/libuv/test/test-delayed-accept.c +197 -0
  266. data/ext/libuv/test/test-dlerror.c +58 -0
  267. data/ext/libuv/test/test-error.c +59 -0
  268. data/ext/libuv/test/test-fail-always.c +29 -0
  269. data/ext/libuv/test/test-fs-event.c +442 -0
  270. data/ext/libuv/test/test-fs-poll.c +146 -0
  271. data/ext/libuv/test/test-fs.c +1843 -0
  272. data/ext/libuv/test/test-get-currentexe.c +63 -0
  273. data/ext/libuv/test/test-get-loadavg.c +36 -0
  274. data/ext/libuv/test/test-get-memory.c +38 -0
  275. data/ext/libuv/test/test-getaddrinfo.c +122 -0
  276. data/ext/libuv/test/test-gethostbyname.c +189 -0
  277. data/ext/libuv/test/test-getsockname.c +342 -0
  278. data/ext/libuv/test/test-hrtime.c +54 -0
  279. data/ext/libuv/test/test-idle.c +81 -0
  280. data/ext/libuv/test/test-ipc-send-recv.c +209 -0
  281. data/ext/libuv/test/test-ipc.c +620 -0
  282. data/ext/libuv/test/test-list.h +421 -0
  283. data/ext/libuv/test/test-loop-handles.c +336 -0
  284. data/ext/libuv/test/test-multiple-listen.c +102 -0
  285. data/ext/libuv/test/test-mutexes.c +63 -0
  286. data/ext/libuv/test/test-pass-always.c +28 -0
  287. data/ext/libuv/test/test-ping-pong.c +253 -0
  288. data/ext/libuv/test/test-pipe-bind-error.c +140 -0
  289. data/ext/libuv/test/test-pipe-connect-error.c +96 -0
  290. data/ext/libuv/test/test-platform-output.c +87 -0
  291. data/ext/libuv/test/test-poll-close.c +77 -0
  292. data/ext/libuv/test/test-poll.c +573 -0
  293. data/ext/libuv/test/test-process-title.c +42 -0
  294. data/ext/libuv/test/test-ref.c +338 -0
  295. data/ext/libuv/test/test-run-once.c +48 -0
  296. data/ext/libuv/test/test-semaphore.c +111 -0
  297. data/ext/libuv/test/test-shutdown-close.c +103 -0
  298. data/ext/libuv/test/test-shutdown-eof.c +183 -0
  299. data/ext/libuv/test/test-spawn.c +847 -0
  300. data/ext/libuv/test/test-stdio-over-pipes.c +246 -0
  301. data/ext/libuv/test/test-tcp-bind-error.c +191 -0
  302. data/ext/libuv/test/test-tcp-bind6-error.c +154 -0
  303. data/ext/libuv/test/test-tcp-close-while-connecting.c +80 -0
  304. data/ext/libuv/test/test-tcp-close.c +129 -0
  305. data/ext/libuv/test/test-tcp-connect-error-after-write.c +95 -0
  306. data/ext/libuv/test/test-tcp-connect-error.c +70 -0
  307. data/ext/libuv/test/test-tcp-connect-timeout.c +85 -0
  308. data/ext/libuv/test/test-tcp-connect6-error.c +68 -0
  309. data/ext/libuv/test/test-tcp-flags.c +51 -0
  310. data/ext/libuv/test/test-tcp-shutdown-after-write.c +131 -0
  311. data/ext/libuv/test/test-tcp-write-error.c +168 -0
  312. data/ext/libuv/test/test-tcp-write-to-half-open-connection.c +135 -0
  313. data/ext/libuv/test/test-tcp-writealot.c +170 -0
  314. data/ext/libuv/test/test-thread.c +183 -0
  315. data/ext/libuv/test/test-threadpool.c +57 -0
  316. data/ext/libuv/test/test-timer-again.c +141 -0
  317. data/ext/libuv/test/test-timer.c +152 -0
  318. data/ext/libuv/test/test-tty.c +110 -0
  319. data/ext/libuv/test/test-udp-dgram-too-big.c +86 -0
  320. data/ext/libuv/test/test-udp-ipv6.c +156 -0
  321. data/ext/libuv/test/test-udp-multicast-join.c +139 -0
  322. data/ext/libuv/test/test-udp-multicast-ttl.c +86 -0
  323. data/ext/libuv/test/test-udp-options.c +86 -0
  324. data/ext/libuv/test/test-udp-send-and-recv.c +208 -0
  325. data/ext/libuv/test/test-util.c +97 -0
  326. data/ext/libuv/test/test-walk-handles.c +77 -0
  327. data/ext/libuv/uv.gyp +452 -0
  328. data/ext/libuv/vcbuild.bat +105 -0
  329. data/ext/racer/extconf.rb +20 -0
  330. data/ext/racer/http_parser.c +2059 -0
  331. data/ext/racer/http_parser.h +318 -0
  332. data/ext/racer/mkmf.log +22 -0
  333. data/ext/racer/racer.c +551 -0
  334. data/lib/racer.rb +2 -0
  335. data/lib/racer/version.rb +3 -0
  336. metadata +382 -0
@@ -0,0 +1,86 @@
1
+
2
+ /* Copyright 1998 by the Massachusetts Institute of Technology.
3
+ *
4
+ * Permission to use, copy, modify, and distribute this
5
+ * software and its documentation for any purpose and without
6
+ * fee is hereby granted, provided that the above copyright
7
+ * notice appear in all copies and that both that copyright
8
+ * notice and this permission notice appear in supporting
9
+ * documentation, and that the name of M.I.T. not be used in
10
+ * advertising or publicity pertaining to distribution of the
11
+ * software without specific, written prior permission.
12
+ * M.I.T. makes no representations about the suitability of
13
+ * this software for any purpose. It is provided "as is"
14
+ * without express or implied warranty.
15
+ */
16
+
17
+ #include "ares_setup.h"
18
+
19
+ #include "ares.h"
20
+ #include "ares_private.h"
21
+
22
+ /* Routines for managing doubly-linked circular linked lists with a
23
+ * dummy head.
24
+ */
25
+
26
+ /* Initialize a new head node */
27
+ void ares__init_list_head(struct list_node* head) {
28
+ head->prev = head;
29
+ head->next = head;
30
+ head->data = NULL;
31
+ }
32
+
33
+ /* Initialize a list node */
34
+ void ares__init_list_node(struct list_node* node, void* d) {
35
+ node->prev = NULL;
36
+ node->next = NULL;
37
+ node->data = d;
38
+ }
39
+
40
+ /* Returns true iff the given list is empty */
41
+ int ares__is_list_empty(struct list_node* head) {
42
+ return ((head->next == head) && (head->prev == head));
43
+ }
44
+
45
+ /* Inserts new_node before old_node */
46
+ void ares__insert_in_list(struct list_node* new_node,
47
+ struct list_node* old_node) {
48
+ new_node->next = old_node;
49
+ new_node->prev = old_node->prev;
50
+ old_node->prev->next = new_node;
51
+ old_node->prev = new_node;
52
+ }
53
+
54
+ /* Removes the node from the list it's in, if any */
55
+ void ares__remove_from_list(struct list_node* node) {
56
+ if (node->next != NULL) {
57
+ node->prev->next = node->next;
58
+ node->next->prev = node->prev;
59
+ node->prev = NULL;
60
+ node->next = NULL;
61
+ }
62
+ }
63
+
64
+ /* Swap the contents of two lists */
65
+ void ares__swap_lists(struct list_node* head_a,
66
+ struct list_node* head_b) {
67
+ int is_a_empty = ares__is_list_empty(head_a);
68
+ int is_b_empty = ares__is_list_empty(head_b);
69
+ struct list_node old_a = *head_a;
70
+ struct list_node old_b = *head_b;
71
+
72
+ if (is_a_empty) {
73
+ ares__init_list_head(head_b);
74
+ } else {
75
+ *head_b = old_a;
76
+ old_a.next->prev = head_b;
77
+ old_a.prev->next = head_b;
78
+ }
79
+ if (is_b_empty) {
80
+ ares__init_list_head(head_a);
81
+ } else {
82
+ *head_a = old_b;
83
+ old_b.next->prev = head_a;
84
+ old_b.prev->next = head_a;
85
+ }
86
+ }
@@ -0,0 +1,42 @@
1
+ #ifndef __ARES_LLIST_H
2
+ #define __ARES_LLIST_H
3
+
4
+
5
+ /* Copyright 1998 by the Massachusetts Institute of Technology.
6
+ *
7
+ * Permission to use, copy, modify, and distribute this
8
+ * software and its documentation for any purpose and without
9
+ * fee is hereby granted, provided that the above copyright
10
+ * notice appear in all copies and that both that copyright
11
+ * notice and this permission notice appear in supporting
12
+ * documentation, and that the name of M.I.T. not be used in
13
+ * advertising or publicity pertaining to distribution of the
14
+ * software without specific, written prior permission.
15
+ * M.I.T. makes no representations about the suitability of
16
+ * this software for any purpose. It is provided "as is"
17
+ * without express or implied warranty.
18
+ */
19
+
20
+
21
+ /* Node definition for circular, doubly-linked list */
22
+ struct list_node {
23
+ struct list_node *prev;
24
+ struct list_node *next;
25
+ void* data;
26
+ };
27
+
28
+ void ares__init_list_head(struct list_node* head);
29
+
30
+ void ares__init_list_node(struct list_node* node, void* d);
31
+
32
+ int ares__is_list_empty(struct list_node* head);
33
+
34
+ void ares__insert_in_list(struct list_node* new_node,
35
+ struct list_node* old_node);
36
+
37
+ void ares__remove_from_list(struct list_node* node);
38
+
39
+ void ares__swap_lists(struct list_node* head_a,
40
+ struct list_node* head_b);
41
+
42
+ #endif /* __ARES_LLIST_H */
@@ -0,0 +1,195 @@
1
+
2
+ /* Copyright 1998 by the Massachusetts Institute of Technology.
3
+ *
4
+ * Permission to use, copy, modify, and distribute this
5
+ * software and its documentation for any purpose and without
6
+ * fee is hereby granted, provided that the above copyright
7
+ * notice appear in all copies and that both that copyright
8
+ * notice and this permission notice appear in supporting
9
+ * documentation, and that the name of M.I.T. not be used in
10
+ * advertising or publicity pertaining to distribution of the
11
+ * software without specific, written prior permission.
12
+ * M.I.T. makes no representations about the suitability of
13
+ * this software for any purpose. It is provided "as is"
14
+ * without express or implied warranty.
15
+ */
16
+
17
+ #include "ares_setup.h"
18
+
19
+ #ifdef HAVE_SYS_SOCKET_H
20
+ # include <sys/socket.h>
21
+ #endif
22
+ #ifdef HAVE_NETINET_IN_H
23
+ # include <netinet/in.h>
24
+ #endif
25
+ #ifdef HAVE_ARPA_NAMESER_H
26
+ # include <arpa/nameser.h>
27
+ #else
28
+ # include "nameser.h"
29
+ #endif
30
+ #ifdef HAVE_ARPA_NAMESER_COMPAT_H
31
+ # include <arpa/nameser_compat.h>
32
+ #endif
33
+
34
+ #include <stdlib.h>
35
+ #include <string.h>
36
+ #include "ares.h"
37
+ #include "ares_dns.h"
38
+ #include "ares_private.h"
39
+
40
+ /* Header format, from RFC 1035:
41
+ * 1 1 1 1 1 1
42
+ * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
43
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
44
+ * | ID |
45
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
46
+ * |QR| Opcode |AA|TC|RD|RA| Z | RCODE |
47
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
48
+ * | QDCOUNT |
49
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
50
+ * | ANCOUNT |
51
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
52
+ * | NSCOUNT |
53
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
54
+ * | ARCOUNT |
55
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
56
+ *
57
+ * AA, TC, RA, and RCODE are only set in responses. Brief description
58
+ * of the remaining fields:
59
+ * ID Identifier to match responses with queries
60
+ * QR Query (0) or response (1)
61
+ * Opcode For our purposes, always QUERY
62
+ * RD Recursion desired
63
+ * Z Reserved (zero)
64
+ * QDCOUNT Number of queries
65
+ * ANCOUNT Number of answers
66
+ * NSCOUNT Number of name server records
67
+ * ARCOUNT Number of additional records
68
+ *
69
+ * Question format, from RFC 1035:
70
+ * 1 1 1 1 1 1
71
+ * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
72
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
73
+ * | |
74
+ * / QNAME /
75
+ * / /
76
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
77
+ * | QTYPE |
78
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
79
+ * | QCLASS |
80
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
81
+ *
82
+ * The query name is encoded as a series of labels, each represented
83
+ * as a one-byte length (maximum 63) followed by the text of the
84
+ * label. The list is terminated by a label of length zero (which can
85
+ * be thought of as the root domain).
86
+ */
87
+
88
+ int ares_mkquery(const char *name, int dnsclass, int type, unsigned short id,
89
+ int rd, unsigned char **buf, int *buflen)
90
+ {
91
+ int len;
92
+ unsigned char *q;
93
+ const char *p;
94
+
95
+ /* Set our results early, in case we bail out early with an error. */
96
+ *buflen = 0;
97
+ *buf = NULL;
98
+
99
+ /* Compute the length of the encoded name so we can check buflen.
100
+ * Start counting at 1 for the zero-length label at the end. */
101
+ len = 1;
102
+ for (p = name; *p; p++)
103
+ {
104
+ if (*p == '\\' && *(p + 1) != 0)
105
+ p++;
106
+ len++;
107
+ }
108
+ /* If there are n periods in the name, there are n + 1 labels, and
109
+ * thus n + 1 length fields, unless the name is empty or ends with a
110
+ * period. So add 1 unless name is empty or ends with a period.
111
+ */
112
+ if (*name && *(p - 1) != '.')
113
+ len++;
114
+
115
+ /* Immediately reject names that are longer than the maximum of 255
116
+ * bytes that's specified in RFC 1035 ("To simplify implementations,
117
+ * the total length of a domain name (i.e., label octets and label
118
+ * length octets) is restricted to 255 octets or less."). We aren't
119
+ * doing this just to be a stickler about RFCs. For names that are
120
+ * too long, 'dnscache' closes its TCP connection to us immediately
121
+ * (when using TCP) and ignores the request when using UDP, and
122
+ * BIND's named returns ServFail (TCP or UDP). Sending a request
123
+ * that we know will cause 'dnscache' to close the TCP connection is
124
+ * painful, since that makes any other outstanding requests on that
125
+ * connection fail. And sending a UDP request that we know
126
+ * 'dnscache' will ignore is bad because resources will be tied up
127
+ * until we time-out the request.
128
+ */
129
+ if (len > MAXCDNAME)
130
+ return ARES_EBADNAME;
131
+
132
+ *buflen = len + HFIXEDSZ + QFIXEDSZ;
133
+ *buf = malloc(*buflen);
134
+ if (!*buf)
135
+ return ARES_ENOMEM;
136
+
137
+ /* Set up the header. */
138
+ q = *buf;
139
+ memset(q, 0, HFIXEDSZ);
140
+ DNS_HEADER_SET_QID(q, id);
141
+ DNS_HEADER_SET_OPCODE(q, QUERY);
142
+ if (rd) {
143
+ DNS_HEADER_SET_RD(q, 1);
144
+ }
145
+ else {
146
+ DNS_HEADER_SET_RD(q, 0);
147
+ }
148
+ DNS_HEADER_SET_QDCOUNT(q, 1);
149
+
150
+ /* A name of "." is a screw case for the loop below, so adjust it. */
151
+ if (strcmp(name, ".") == 0)
152
+ name++;
153
+
154
+ /* Start writing out the name after the header. */
155
+ q += HFIXEDSZ;
156
+ while (*name)
157
+ {
158
+ if (*name == '.')
159
+ return ARES_EBADNAME;
160
+
161
+ /* Count the number of bytes in this label. */
162
+ len = 0;
163
+ for (p = name; *p && *p != '.'; p++)
164
+ {
165
+ if (*p == '\\' && *(p + 1) != 0)
166
+ p++;
167
+ len++;
168
+ }
169
+ if (len > MAXLABEL)
170
+ return ARES_EBADNAME;
171
+
172
+ /* Encode the length and copy the data. */
173
+ *q++ = (unsigned char)len;
174
+ for (p = name; *p && *p != '.'; p++)
175
+ {
176
+ if (*p == '\\' && *(p + 1) != 0)
177
+ p++;
178
+ *q++ = *p;
179
+ }
180
+
181
+ /* Go to the next label and repeat, unless we hit the end. */
182
+ if (!*p)
183
+ break;
184
+ name = p + 1;
185
+ }
186
+
187
+ /* Add the zero-length label at the end. */
188
+ *q++ = 0;
189
+
190
+ /* Finish off the question with the type and class. */
191
+ DNS_QUESTION_SET_TYPE(q, type);
192
+ DNS_QUESTION_SET_CLASS(q, dnsclass);
193
+
194
+ return ARES_SUCCESS;
195
+ }
@@ -0,0 +1,181 @@
1
+
2
+ /* Copyright (C) 2010-2011 by Daniel Stenberg
3
+ *
4
+ * Permission to use, copy, modify, and distribute this
5
+ * software and its documentation for any purpose and without
6
+ * fee is hereby granted, provided that the above copyright
7
+ * notice appear in all copies and that both that copyright
8
+ * notice and this permission notice appear in supporting
9
+ * documentation, and that the name of M.I.T. not be used in
10
+ * advertising or publicity pertaining to distribution of the
11
+ * software without specific, written prior permission.
12
+ * M.I.T. makes no representations about the suitability of
13
+ * this software for any purpose. It is provided "as is"
14
+ * without express or implied warranty.
15
+ */
16
+
17
+
18
+ #include "ares_setup.h"
19
+
20
+ #ifdef HAVE_ASSERT_H
21
+ # include <assert.h>
22
+ #endif
23
+
24
+ #if defined(__INTEL_COMPILER) && defined(__unix__)
25
+
26
+ #ifdef HAVE_SYS_SOCKET_H
27
+ # include <sys/socket.h>
28
+ #endif
29
+ #ifdef HAVE_NETINET_IN_H
30
+ # include <netinet/in.h>
31
+ #endif
32
+ #ifdef HAVE_ARPA_INET_H
33
+ # include <arpa/inet.h>
34
+ #endif
35
+
36
+ #endif /* __INTEL_COMPILER && __unix__ */
37
+
38
+ #define BUILDING_ARES_NOWARN_C 1
39
+
40
+ #include "ares_nowarn.h"
41
+
42
+ #if (SIZEOF_INT == 2)
43
+ # define CARES_MASK_SINT 0x7FFF
44
+ # define CARES_MASK_UINT 0xFFFF
45
+ #elif (SIZEOF_INT == 4)
46
+ # define CARES_MASK_SINT 0x7FFFFFFF
47
+ # define CARES_MASK_UINT 0xFFFFFFFF
48
+ #elif (SIZEOF_INT == 8)
49
+ # define CARES_MASK_SINT 0x7FFFFFFFFFFFFFFF
50
+ # define CARES_MASK_UINT 0xFFFFFFFFFFFFFFFF
51
+ #elif (SIZEOF_INT == 16)
52
+ # define CARES_MASK_SINT 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
53
+ # define CARES_MASK_UINT 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
54
+ #endif
55
+
56
+ /*
57
+ ** unsigned size_t to signed int
58
+ */
59
+
60
+ int aresx_uztosi(size_t uznum)
61
+ {
62
+ #ifdef __INTEL_COMPILER
63
+ # pragma warning(push)
64
+ # pragma warning(disable:810) /* conversion may lose significant bits */
65
+ #endif
66
+
67
+ return (int)(uznum & (size_t) CARES_MASK_SINT);
68
+
69
+ #ifdef __INTEL_COMPILER
70
+ # pragma warning(pop)
71
+ #endif
72
+ }
73
+
74
+ /*
75
+ ** signed long to signed int
76
+ */
77
+
78
+ int aresx_sltosi(long slnum)
79
+ {
80
+ #ifdef __INTEL_COMPILER
81
+ # pragma warning(push)
82
+ # pragma warning(disable:810) /* conversion may lose significant bits */
83
+ #endif
84
+
85
+ DEBUGASSERT(slnum >= 0);
86
+ return (int)(slnum & (long) CARES_MASK_SINT);
87
+
88
+ #ifdef __INTEL_COMPILER
89
+ # pragma warning(pop)
90
+ #endif
91
+ }
92
+
93
+ /*
94
+ ** signed ssize_t to signed int
95
+ */
96
+
97
+ int aresx_sztosi(ssize_t sznum)
98
+ {
99
+ #ifdef __INTEL_COMPILER
100
+ # pragma warning(push)
101
+ # pragma warning(disable:810) /* conversion may lose significant bits */
102
+ #endif
103
+
104
+ DEBUGASSERT(sznum >= 0);
105
+ return (int)(sznum & (ssize_t) CARES_MASK_SINT);
106
+
107
+ #ifdef __INTEL_COMPILER
108
+ # pragma warning(pop)
109
+ #endif
110
+ }
111
+
112
+ /*
113
+ ** signed ssize_t to unsigned int
114
+ */
115
+
116
+ unsigned int aresx_sztoui(ssize_t sznum)
117
+ {
118
+ #ifdef __INTEL_COMPILER
119
+ # pragma warning(push)
120
+ # pragma warning(disable:810) /* conversion may lose significant bits */
121
+ #endif
122
+
123
+ DEBUGASSERT(sznum >= 0);
124
+ return (unsigned int)(sznum & (ssize_t) CARES_MASK_UINT);
125
+
126
+ #ifdef __INTEL_COMPILER
127
+ # pragma warning(pop)
128
+ #endif
129
+ }
130
+
131
+ #if defined(__INTEL_COMPILER) && defined(__unix__)
132
+
133
+ int aresx_FD_ISSET(int fd, fd_set *fdset)
134
+ {
135
+ #pragma warning(push)
136
+ #pragma warning(disable:1469) /* clobber ignored */
137
+ return FD_ISSET(fd, fdset);
138
+ #pragma warning(pop)
139
+ }
140
+
141
+ void aresx_FD_SET(int fd, fd_set *fdset)
142
+ {
143
+ #pragma warning(push)
144
+ #pragma warning(disable:1469) /* clobber ignored */
145
+ FD_SET(fd, fdset);
146
+ #pragma warning(pop)
147
+ }
148
+
149
+ void aresx_FD_ZERO(fd_set *fdset)
150
+ {
151
+ #pragma warning(push)
152
+ #pragma warning(disable:593) /* variable was set but never used */
153
+ FD_ZERO(fdset);
154
+ #pragma warning(pop)
155
+ }
156
+
157
+ unsigned short aresx_htons(unsigned short usnum)
158
+ {
159
+ #if (__INTEL_COMPILER == 910) && defined(__i386__)
160
+ return (unsigned short)(((usnum << 8) & 0xFF00) | ((usnum >> 8) & 0x00FF));
161
+ #else
162
+ #pragma warning(push)
163
+ #pragma warning(disable:810) /* conversion may lose significant bits */
164
+ return htons(usnum);
165
+ #pragma warning(pop)
166
+ #endif
167
+ }
168
+
169
+ unsigned short aresx_ntohs(unsigned short usnum)
170
+ {
171
+ #if (__INTEL_COMPILER == 910) && defined(__i386__)
172
+ return (unsigned short)(((usnum << 8) & 0xFF00) | ((usnum >> 8) & 0x00FF));
173
+ #else
174
+ #pragma warning(push)
175
+ #pragma warning(disable:810) /* conversion may lose significant bits */
176
+ return ntohs(usnum);
177
+ #pragma warning(pop)
178
+ #endif
179
+ }
180
+
181
+ #endif /* __INTEL_COMPILER && __unix__ */