Go to the documentation of this file.
61 #define WRITE_BUF_LEN (64*1024)
62 #define DNSREC_LEN (4)
65 #define QUERYID_OFFSET 2
68 0, 43, 0, 0, 0x81, 0x80, 0, 1, 0, 1, 0, 0, 0, 0
72 5,
'e',
'c',
'h',
'o',
's', 3,
's',
'r',
'v', 0, 0, 1, 0, 1
76 0xc0, 0x0c, 0, 1, 0, 1, 0, 0, 5, 0xbd, 0, 4, 10, 0, 1, 1
119 reclen = (
short int*)dnsrsp;
120 *reclen = htons(rsplen-2);
134 int rec_remaining = 0;
135 int readbuf_remaining;
150 readbuf_remaining = nread;
154 while (dnsreq != NULL) {
156 while (readbuf_remaining > 0) {
158 if (hdrbuf_remaining > 0) {
160 if (readbuf_remaining < hdrbuf_remaining) {
165 hdrbuf_remaining =
DNSREC_LEN - readbuf_remaining;
172 dnsreq += hdrbuf_remaining;
173 readbuf_remaining -= hdrbuf_remaining;
174 hdrbuf_remaining = 0;
177 rec_remaining = (unsigned) hdrbuf[0] * 256 + (
unsigned) hdrbuf[1];
182 if (rec_remaining <= readbuf_remaining) {
187 dnsreq += rec_remaining;
189 readbuf_remaining -= rec_remaining;
194 rec_remaining -= readbuf_remaining;
202 if (usingprev == 1) {
206 readbuf_remaining = nread;
216 FATAL(
"uv_write failed");
220 if (readbuf_remaining > 0) {
247 req = malloc(
sizeof *
req);
269 size_t suggested_size,
271 buf->base = malloc(suggested_size);
272 buf->len = suggested_size;
286 handle->state.prevbuf_ptr = 0;
287 handle->state.prevbuf_pos = 0;
288 handle->state.prevbuf_rem = 0;
302 struct sockaddr_in
addr;
310 fprintf(
stderr,
"Socket creation error\n");
317 fprintf(
stderr,
"Bind error\n");
324 fprintf(
stderr,
"Listen error\n");
static unsigned char qrecord[]
static void buf_alloc(uv_handle_t *handle, size_t suggested_size, uv_buf_t *buf)
static void on_connection(uv_stream_t *, int status)
UV_EXTERN int uv_listen(uv_stream_t *stream, int backlog, uv_connection_cb cb)
const UV_EXTERN char * uv_strerror(int err)
static void process_req(uv_stream_t *handle, ssize_t nread, const uv_buf_t *buf)
static void addrsp(write_req_t *wr, char *hdr)
UV_EXTERN int uv_run(uv_loop_t *, uv_run_mode mode)
UV_EXTERN int uv_tcp_bind(uv_tcp_t *handle, const struct sockaddr *addr, unsigned int flags)
UV_EXTERN void uv_close(uv_handle_t *handle, uv_close_cb close_cb)
UV_EXTERN int uv_ip4_addr(const char *ip, int port, struct sockaddr_in *addr)
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
UV_EXTERN uv_loop_t * uv_default_loop(void)
static unsigned char arecord[]
UV_EXTERN int uv_write(uv_write_t *req, uv_stream_t *handle, const uv_buf_t bufs[], unsigned int nbufs, uv_write_cb cb)
UV_PRIVATE_REQ_TYPES UV_EXTERN int uv_shutdown(uv_shutdown_t *req, uv_stream_t *handle, uv_shutdown_cb cb)
UV_EXTERN int uv_read_start(uv_stream_t *, uv_alloc_cb alloc_cb, uv_read_cb read_cb)
UV_EXTERN int uv_tcp_init(uv_loop_t *, uv_tcp_t *handle)
UV_EXTERN int uv_accept(uv_stream_t *server, uv_stream_t *client)
static void after_write(uv_write_t *req, int status)
static void after_read(uv_stream_t *, ssize_t nread, const uv_buf_t *buf)
static void after_shutdown(uv_shutdown_t *req, int status)
static unsigned char DNSRsp[]
static void on_close(uv_handle_t *peer)
static int dns_start(int port)
grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:17