Lines Matching refs:port

242 /* Represents a local port where we're listening for DNS requests. Right now, */
248 char closing; /* Are we trying to close this port, pending writes? */
283 struct evdns_server_port *port; /* Which port received this request on? */
409 static void server_port_free(struct evdns_server_port *port);
1214 /* Parse a raw request (packet,length) sent to a nameserver port (port) from */
1218 request_parse(u8 *packet, int length, struct evdns_server_port *port, struct sockaddr *addr, ev_socklen_t addrlen)
1228 ASSERT_LOCKED(port);
1278 server_req->port = port;
1279 port->refcnt++;
1287 port->user_callback(&(server_req->base), port->user_data);
1407 /* Read a packet from a DNS client on a server port s, parse it, and */
1434 /* Try to write all pending replies on a given DNS server port. */
1436 server_port_flush(struct evdns_server_port *port)
1438 struct server_request *req = port->pending_replies;
1439 ASSERT_LOCKED(port);
1441 int r = sendto(port->socket, req->response, (int)req->response_len, 0,
1444 int err = evutil_socket_geterror(port->socket);
1447 log(EVDNS_LOG_WARN, "Error %s (%d) while writing response to port; dropping", evutil_socket_error_to_string(err), err);
1450 /* we released the last reference to req->port. */
1453 EVUTIL_ASSERT(req != port->pending_replies);
1454 req = port->pending_replies;
1459 (void) event_del(&port->event);
1460 event_assign(&port->event, port->event_base,
1461 port->socket, EV_READ | EV_PERSIST,
1462 server_port_ready_callback, port);
1464 if (event_add(&port->event, NULL) < 0) {
1517 struct evdns_server_port *port = (struct evdns_server_port *) arg;
1520 EVDNS_LOCK(port);
1522 port->choked = 0;
1523 server_port_flush(port);
1526 server_port_read(port);
1528 EVDNS_UNLOCK(port);
1712 struct evdns_server_port *port;
1715 if (!(port = mm_malloc(sizeof(struct evdns_server_port))))
1717 memset(port, 0, sizeof(struct evdns_server_port));
1720 port->socket = socket;
1721 port->refcnt = 1;
1722 port->choked = 0;
1723 port->closing = 0;
1724 port->user_callback = cb;
1725 port->user_data = user_data;
1726 port->pending_replies = NULL;
1727 port->event_base = base;
1729 event_assign(&port->event, port->event_base,
1730 port->socket, EV_READ | EV_PERSIST,
1731 server_port_ready_callback, port);
1732 if (event_add(&port->event, NULL) < 0) {
1733 mm_free(port);
1736 EVTHREAD_ALLOC_LOCK(port->lock, EVTHREAD_LOCKTYPE_RECURSIVE);
1737 return port;
1748 evdns_close_server_port(struct evdns_server_port *port)
1750 EVDNS_LOCK(port);
1751 if (--port->refcnt == 0) {
1752 EVDNS_UNLOCK(port);
1753 server_port_free(port);
1755 port->closing = 1;
1768 EVDNS_LOCK(req->port);
1828 EVDNS_UNLOCK(req->port);
1994 struct evdns_server_port *port = req->port;
1997 EVDNS_LOCK(port);
2003 r = sendto(port->socket, req->response, (int)req->response_len, 0,
2006 int sock_err = evutil_socket_geterror(port->socket);
2010 if (port->pending_replies) {
2011 req->prev_pending = port->pending_replies->prev_pending;
2012 req->next_pending = port->pending_replies;
2017 port->pending_replies = req;
2018 port->choked = 1;
2020 (void) event_del(&port->event);
2021 event_assign(&port->event, port->event_base, port->socket, (port->closing?0:EV_READ) | EV_WRITE | EV_PERSIST, server_port_ready_callback, port);
2023 if (event_add(&port->event, NULL) < 0) {
2037 if (port->pending_replies)
2038 server_port_flush(port);
2042 EVDNS_UNLOCK(port);
2085 if (req->port) {
2086 EVDNS_LOCK(req->port);
2088 if (req->port->pending_replies == req) {
2090 req->port->pending_replies = req->next_pending;
2092 req->port->pending_replies = NULL;
2094 rc = --req->port->refcnt;
2109 EVDNS_UNLOCK(req->port); /* ????? nickm */
2110 server_port_free(req->port);
2115 EVDNS_UNLOCK(req->port);
2122 server_port_free(struct evdns_server_port *port)
2124 EVUTIL_ASSERT(port);
2125 EVUTIL_ASSERT(!port->refcnt);
2126 EVUTIL_ASSERT(!port->pending_replies);
2127 if (port->socket > 0) {
2128 evutil_closesocket(port->socket);
2129 port->socket = -1;
2131 (void) event_del(&port->event);
2132 event_debug_unassign(&port->event);
2133 EVTHREAD_FREE_LOCK(port->lock, EVTHREAD_LOCKTYPE_RECURSIVE);
2134 mm_free(port);
2592 sockaddr_setport(struct sockaddr *sa, ev_uint16_t port)
2595 ((struct sockaddr_in *)sa)->sin_port = htons(port);
2597 ((struct sockaddr_in6 *)sa)->sin6_port = htons(port);
4237 /* The port to use when building sockaddrs. */
4238 ev_uint16_t port;
4493 sin.sin_port = htons(data->port);
4502 sin6.sin6_port = htons(data->port);
4578 const char *nodename, struct evutil_addrinfo *hints, ev_uint16_t port,
4599 sockaddr_setport(ai_new->ai_addr, port);
4626 int port = 0;
4662 err = evutil_getaddrinfo_common_(nodename, servname, &hints, &res, &port);
4669 if (!evdns_getaddrinfo_fromhosts(dns_base, nodename, &hints, port, &res)) {
4684 data->port = (ev_uint16_t)port;