diff --git a/ChangeLog b/ChangeLog index 4294904c86..cc87bfaf80 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ + 200. [bug] Jelte + Fixed a bug where incoming TCP connections were not closed. + (Trac #589, git 1d88daaa24e8b1ab27f28be876f40a144241e93b) + 199. [func] ocean Cache negative responses (NXDOMAIN/NODATA) from authoritative server for recursive resolver. diff --git a/src/bin/resolver/response_scrubber.h b/src/bin/resolver/response_scrubber.h index c3fce57df9..680aa5ab41 100644 --- a/src/bin/resolver/response_scrubber.h +++ b/src/bin/resolver/response_scrubber.h @@ -177,7 +177,7 @@ /// Qu: www.sub.example.com\n /// Zo: example.com /// -/// An: +/// An: (nothing) /// /// Au(1): sub.example.com NS ns0.sub.example.com\n /// Au(2): sub.example.com NS ns1.example.net @@ -312,7 +312,7 @@ public: /// QNAME is equal to or in the supplied relationship with the given name. /// /// \param section Section of the message to be scrubbed. - /// \param zone Names against which RRsets should be checked. Note that + /// \param names Names against which RRsets should be checked. Note that /// this is a vector of pointers to Name objects; they are assumed to /// independently exist, and the caller retains ownership of them and is /// assumed to destroy them when needed. diff --git a/src/lib/asiolink/dns_lookup.h b/src/lib/asiolink/dns_lookup.h index 078885397a..a79976f526 100644 --- a/src/lib/asiolink/dns_lookup.h +++ b/src/lib/asiolink/dns_lookup.h @@ -63,8 +63,10 @@ public: /// /// \param io_message The event message to handle /// \param message The DNS MessagePtr that needs handling + /// \param answer_message The final answer will be constructed in + /// this MessagePtr /// \param buffer The final answer is put here - /// \param DNSServer DNSServer object to use + /// \param server DNSServer object to use virtual void operator()(const IOMessage& io_message, isc::dns::MessagePtr message, isc::dns::MessagePtr answer_message, diff --git a/src/lib/asiolink/dns_service.h b/src/lib/asiolink/dns_service.h index e1583c04a5..9a3fb4c44f 100644 --- a/src/lib/asiolink/dns_service.h +++ b/src/lib/asiolink/dns_service.h @@ -66,8 +66,8 @@ public: /// /// \param io_service The IOService to work with /// \param port the port to listen on - /// \param ipv4 If true, listen on ipv4 'any' - /// \param ipv6 If true, listen on ipv6 'any' + /// \param use_ipv4 If true, listen on ipv4 'any' + /// \param use_ipv6 If true, listen on ipv6 'any' /// \param checkin Provider for cc-channel events (see \c SimpleCallback) /// \param lookup The lookup provider (see \c DNSLookup) /// \param answer The answer provider (see \c DNSAnswer) diff --git a/src/lib/asiolink/io_address.h b/src/lib/asiolink/io_address.h index d7598276bc..53c1a7a13a 100644 --- a/src/lib/asiolink/io_address.h +++ b/src/lib/asiolink/io_address.h @@ -61,7 +61,7 @@ public: /// This constructor never throws an exception. /// /// \param asio_address The ASIO \c ip::address to be converted. - IOAddress(const asio::ip::address& asio_adress); + IOAddress(const asio::ip::address& asio_address); //@} /// \brief Convert the address to a string. diff --git a/src/lib/asiolink/tcp_server.cc b/src/lib/asiolink/tcp_server.cc index 3e0cdb420c..0bc56d850b 100644 --- a/src/lib/asiolink/tcp_server.cc +++ b/src/lib/asiolink/tcp_server.cc @@ -115,6 +115,7 @@ TCPServer::operator()(error_code ec, size_t length) { CORO_YIELD async_read(*socket_, asio::buffer(data_.get(), TCP_MESSAGE_LENGTHSIZE), *this); if (ec) { + socket_->close(); CORO_YIELD return; } @@ -127,6 +128,7 @@ TCPServer::operator()(error_code ec, size_t length) { } if (ec) { + socket_->close(); CORO_YIELD return; } @@ -160,6 +162,7 @@ TCPServer::operator()(error_code ec, size_t length) { // If we don't have a DNS Lookup provider, there's no point in // continuing; we exit the coroutine permanently. if (lookup_callback_ == NULL) { + socket_->close(); CORO_YIELD return; } @@ -177,6 +180,9 @@ TCPServer::operator()(error_code ec, size_t length) { // The 'done_' flag indicates whether we have an answer // to send back. If not, exit the coroutine permanently. if (!done_) { + // TODO: should we keep the connection open for a short time + // to see if new requests come in? + socket_->close(); CORO_YIELD return; } @@ -195,6 +201,10 @@ TCPServer::operator()(error_code ec, size_t length) { // (though we have nothing further to do, so the coroutine // will simply exit at that time). CORO_YIELD async_write(*socket_, bufs, *this); + + // TODO: should we keep the connection open for a short time + // to see if new requests come in? + socket_->close(); } } diff --git a/src/lib/cc/data.h b/src/lib/cc/data.h index 4f121d5f3e..0a363f43a8 100644 --- a/src/lib/cc/data.h +++ b/src/lib/cc/data.h @@ -222,6 +222,7 @@ public: /// Sets the ElementPtr at the given key /// \param name The key of the Element to set + /// \param element The ElementPtr to set at the given key. virtual void set(const std::string& name, ConstElementPtr element); /// Remove the ElementPtr at the given key @@ -315,10 +316,11 @@ public: /// Creates an Element from the given input stream, where we keep /// track of the location in the stream for error reporting. /// - /// \param in The string to parse the element from + /// \param in The string to parse the element from. + /// \param file The input file name. /// \param line A reference to the int where the function keeps /// track of the current line. - /// \param line A reference to the int where the function keeps + /// \param pos A reference to the int where the function keeps /// track of the current position within the current line. /// \return An ElementPtr that contains the element(s) specified /// in the given input stream. @@ -548,18 +550,18 @@ void merge(ElementPtr element, ConstElementPtr other); /// /// \brief Insert the Element as a string into stream. /// -/// This method converts the \c ElemetPtr into a string with +/// This method converts the \c ElementPtr into a string with /// \c Element::str() and inserts it into the /// output stream \c out. /// /// This function overloads the global operator<< to behave as described in /// ostream::operator<< but applied to \c ElementPtr objects. /// -/// \param os A \c std::ostream object on which the insertion operation is +/// \param out A \c std::ostream object on which the insertion operation is /// performed. /// \param e The \c ElementPtr object to insert. /// \return A reference to the same \c std::ostream object referenced by -/// parameter \c os after the insertion operation. +/// parameter \c out after the insertion operation. std::ostream& operator<<(std::ostream& out, const Element& e); bool operator==(const Element& a, const Element& b); diff --git a/src/lib/cc/session.h b/src/lib/cc/session.h index 6d8696d36f..e91dd760ae 100644 --- a/src/lib/cc/session.h +++ b/src/lib/cc/session.h @@ -99,7 +99,7 @@ namespace isc { /// \brief Sets the default timeout for blocking reads /// in this session to the given number of milliseconds /// \param milliseconds the timeout for blocking reads in - /// milliseconds, if this is set to 0, reads will block + /// milliseconds; if this is set to 0, reads will block /// forever. virtual void setTimeout(size_t milliseconds) = 0; diff --git a/src/lib/config/module_spec.h b/src/lib/config/module_spec.h index 0e06a62cdd..ab6e273edd 100644 --- a/src/lib/config/module_spec.h +++ b/src/lib/config/module_spec.h @@ -53,6 +53,8 @@ namespace isc { namespace config { /// Create a \c ModuleSpec instance with the given data as /// the specification /// \param e The Element containing the data specification + /// \param check If false, the module specification in the file + /// is not checked to be of the correct form. explicit ModuleSpec(isc::data::ConstElementPtr e, const bool check = true) throw(ModuleSpecError); @@ -86,6 +88,8 @@ namespace isc { namespace config { // configuration specification /// Validates the given configuration data for this specification. /// \param data The base \c Element of the data to check + /// \param full If true, all non-optional configuration parameters + /// must be specified. /// \return true if the data conforms to the specification, /// false otherwise. bool validateConfig(isc::data::ConstElementPtr data, diff --git a/src/lib/datasrc/memory_datasrc.h b/src/lib/datasrc/memory_datasrc.h index 5a2c74e1d3..99bb4e81bc 100644 --- a/src/lib/datasrc/memory_datasrc.h +++ b/src/lib/datasrc/memory_datasrc.h @@ -289,7 +289,7 @@ public: /// - \c result::PARTIALMATCH: A zone whose origin is a // super domain of \c name is found (but there is no exact match) /// - \c result::NOTFOUND: For all other cases. - /// - \c zone: A shared pointer to the found \c Zone object if one + /// - \c zone: A "Boost" shared pointer to the found \c Zone object if one // is found; otherwise \c NULL. /// /// This method never throws an exception. diff --git a/src/lib/datasrc/zonetable.h b/src/lib/datasrc/zonetable.h index 0ca80b085b..5b873d1a07 100644 --- a/src/lib/datasrc/zonetable.h +++ b/src/lib/datasrc/zonetable.h @@ -107,7 +107,7 @@ public: /// - \c result::PARTIALMATCH: A zone whose origin is a /// super domain of \c name is found (but there is no exact match) /// - \c result::NOTFOUND: For all other cases. - /// - \c zone: A shared pointer to the found \c Zone object if one + /// - \c zone: A "Boost" shared pointer to the found \c Zone object if one /// is found; otherwise \c NULL. /// /// This method never throws an exception. diff --git a/src/lib/dns/edns.h b/src/lib/dns/edns.h index f9a5758f8e..ca3db4737a 100644 --- a/src/lib/dns/edns.h +++ b/src/lib/dns/edns.h @@ -213,7 +213,7 @@ public: /// \param name The owner name of the OPT RR. This must be the root name. /// \param rrclass The RR class of the OPT RR. /// \param rrtype This must specify the OPT RR type. - /// \param rrttl The TTL of the OPT RR. + /// \param ttl The TTL of the OPT RR. /// \param rdata The RDATA of the OPT RR. EDNS(const Name& name, const RRClass& rrclass, const RRType& rrtype, const RRTTL& ttl, const rdata::Rdata& rdata); @@ -418,7 +418,7 @@ private: /// \param name The owner name of the OPT RR. This must be the root name. /// \param rrclass The RR class of the OPT RR. /// \param rrtype This must specify the OPT RR type. -/// \param rrttl The TTL of the OPT RR. +/// \param ttl The TTL of the OPT RR. /// \param rdata The RDATA of the OPT RR. /// \param extended_rcode A placeholder to store the topmost 8 bits of the /// extended Rcode. diff --git a/src/lib/dns/masterload.h b/src/lib/dns/masterload.h index 76d6709106..fe5c08fda5 100644 --- a/src/lib/dns/masterload.h +++ b/src/lib/dns/masterload.h @@ -110,7 +110,7 @@ typedef boost::function MasterLoadCallback; /// but this is not even though it's valid per RFC1035: /// \code example.com. IN 3600 A 192.0.2.1 /// \endcode -/// - , , and must be recognizable by the \c RRTTL, +/// - "TTL", "RRCLASS", and "RRTYPE" must be recognizable by the \c RRTTL, /// RRClass and RRType class implementations of this library. In particular, /// as of this writing TTL must be a decimal number (a convenient extension /// such as "1H" instead of 3600 cannot be used). Not all standard RR @@ -213,7 +213,7 @@ typedef boost::function MasterLoadCallback; /// \param filename A path to a master zone file to be loaded. /// \param origin The origin name of the zone. /// \param zone_class The RR class of the zone. -/// \param callbck A callback functor or function that is to be called +/// \param callback A callback functor or function that is to be called /// for each RRset. void masterLoad(const char* const filename, const Name& origin, const RRClass& zone_class, MasterLoadCallback callback); @@ -231,7 +231,7 @@ void masterLoad(const char* const filename, const Name& origin, /// \param input An input stream object that is to emit zone's RRs. /// \param origin The origin name of the zone. /// \param zone_class The RR class of the zone. -/// \param callbck A callback functor or function that is to be called for +/// \param callback A callback functor or function that is to be called for /// each RRset. void masterLoad(std::istream& input, const Name& origin, const RRClass& zone_class, MasterLoadCallback callback); diff --git a/src/lib/dns/message.h b/src/lib/dns/message.h index 11167d2c13..91a241a11e 100644 --- a/src/lib/dns/message.h +++ b/src/lib/dns/message.h @@ -141,7 +141,7 @@ typedef SectionIterator RRsetIterator; /// - We may want to provide an "iterator" for all RRsets/RRs for convenience. /// This will be for applications that do not care about performance much, /// so the implementation can only be moderately efficient. -/// - may want to provide a "find" method for a specified type +/// - We may want to provide a "find" method for a specified type /// of RR in the message. class Message { public: @@ -155,8 +155,8 @@ public: /// /// Only the defined constants are valid where a header flag is required /// in this library (e.g., in \c Message::setHeaderFlag()). - /// Since these are enum constants, however, invalid value could be passed - /// via casting without an error at compilation time. + /// Since these are enum constants, however, an invalid value could be + /// passed via casting without an error at compilation time. /// It is generally the callee's responsibility to check and reject invalid /// values. /// Of course, applications shouldn't pass invalid values even if the @@ -168,7 +168,7 @@ public: /// specified flag in the second 16 bits of the DNS Header section /// in order to make the internal implementation simpler. /// For example, \c HEADERFLAG_QR is defined to be 0x8000 as the QR - /// bit is the most significant bit of the 2nd 16 bits of the header. + /// bit is the most significant bit of the second 16 bits of the header. /// However, applications should not assume this coincidence and /// must solely use the enum representations. /// Any usage based on the assumption of the underlying values is invalid diff --git a/src/lib/dns/question.h b/src/lib/dns/question.h index 851de2c573..520207b5eb 100644 --- a/src/lib/dns/question.h +++ b/src/lib/dns/question.h @@ -54,13 +54,13 @@ typedef boost::shared_ptr ConstQuestionPtr; /// class. /// This may look odd in that an "RRset" and "Question" are similar from the /// protocol point of view: Both are used as a semantics unit of DNS messages; -/// both share the same set of components, name, RR type and RR class. +/// both share the same set of components (name, RR type and RR class). /// /// In fact, BIND9 didn't introduce a separate data structure for Questions, /// and use the same \c "rdataset" structure for both RRsets and Questions. /// We could take the same approach, but chose to adopt the different design. /// One reason for that is because a Question and an RRset are still -/// different, and a Question might not be cleanly defined if (e.g.) it were +/// different, and a Question might not be cleanly defined, e.g., if it were /// a derived class of some "RRset-like" class. /// For example, we couldn't give a reasonable semantics for \c %getTTL() or /// \c %setTTL() methods for a Question, since it's not associated with the @@ -74,14 +74,14 @@ typedef boost::shared_ptr ConstQuestionPtr; /// /// On the other hand, we do not expect a strong need for customizing the /// \c Question class, unlike the RRset. -/// Handling the Question section of a DNS message is relatively a +/// Handling the "Question" section of a DNS message is relatively a /// simple work comparing to RRset-involved operations, so a unified /// straightforward implementation should suffice for any use cases /// including performance sensitive ones. /// -/// We may, however, still want to have customized version of Question +/// We may, however, still want to have a customized version of Question /// for, e.g, highly optimized behavior, and may revisit this design choice -/// as we have more experiences with this implementation. +/// as we have more experience with this implementation. /// /// One disadvantage of defining RRsets and Questions as unrelated classes /// is that we cannot handle them in a polymorphic way. diff --git a/src/lib/dns/rrset.h b/src/lib/dns/rrset.h index acb42247e8..926a58fa37 100644 --- a/src/lib/dns/rrset.h +++ b/src/lib/dns/rrset.h @@ -278,8 +278,6 @@ public: /// name when possible in the context of zone dump. This is a future /// TODO item. /// - /// \param rrset A reference to a (derived class of) \c AbstractRRset object - /// whose content is to be converted. /// \return A string representation of the RRset. virtual std::string toText() const = 0; diff --git a/src/lib/dns/rrttl.h b/src/lib/dns/rrttl.h index c80030e827..695306ac7c 100644 --- a/src/lib/dns/rrttl.h +++ b/src/lib/dns/rrttl.h @@ -118,7 +118,8 @@ public: /// If resource allocation in rendering process fails, a corresponding /// standard exception will be thrown. /// - /// \param buffer An output buffer to store the wire data. + /// \param renderer DNS message rendering context that encapsulates the + /// output buffer in which the RRTTL is to be stored. void toWire(MessageRenderer& renderer) const; /// \brief Render the \c RRTTL in the wire format. /// @@ -128,8 +129,7 @@ public: /// If resource allocation in rendering process fails, a corresponding /// standard exception will be thrown. /// - /// \param renderer DNS message rendering context that encapsulates the - /// output buffer in which the RRTTL is to be stored. + /// \param buffer An output buffer to store the wire data. void toWire(OutputBuffer& buffer) const; //@} diff --git a/src/lib/log/dummylog.h b/src/lib/log/dummylog.h index f20c0328bf..87da9acdeb 100644 --- a/src/lib/log/dummylog.h +++ b/src/lib/log/dummylog.h @@ -34,7 +34,7 @@ extern std::string dprefix; * \short Temporary interface to logging. * * This is a temporary function to do logging. It has wrong interface currently - * and should be replaced by something else. It's main purpose now is to mark + * and should be replaced by something else. Its main purpose now is to mark * places where logging should happen. When it is removed, compiler will do * our work of finding the places. * @@ -51,6 +51,7 @@ extern std::string dprefix; * * @param message The message to log. The real interface will probably have * more parameters. + * \param error_flag TODO */ void dlog(const std::string& message, bool error_flag=false); diff --git a/src/lib/log/filename.h b/src/lib/log/filename.h index da9e560593..e3cda1684f 100644 --- a/src/lib/log/filename.h +++ b/src/lib/log/filename.h @@ -131,7 +131,7 @@ public: /// \param name Name to expand /// /// \return Name expanded with stored name - std::string useAsDefault(const std::string&) const; + std::string useAsDefault(const std::string& name) const; private: /// \brief Split Name into Components diff --git a/src/lib/log/message_dictionary.h b/src/lib/log/message_dictionary.h index 0caa3ea195..23f76d7fd0 100644 --- a/src/lib/log/message_dictionary.h +++ b/src/lib/log/message_dictionary.h @@ -116,7 +116,7 @@ public: /// const char* and adds them to the dictionary. The messages are added /// using "Add". /// - /// \param data null-terminated array of const char* alternating ID and + /// \param elements null-terminated array of const char* alternating ID and /// message text. This should be an odd number of elements long, the last /// elemnent being NULL. If it is an even number of elements long, the /// last ID is ignored. diff --git a/src/lib/log/xdebuglevel.h b/src/lib/log/xdebuglevel.h index fce3de49df..e580b77d34 100644 --- a/src/lib/log/xdebuglevel.h +++ b/src/lib/log/xdebuglevel.h @@ -132,7 +132,7 @@ public: /// \return Pointer to the desired logging level object. static LevelPtr toLevel(int val, const LevelPtr& defaultLevel); - /// \param Convert String to Logging Level + /// \brief Convert String to Logging Level /// /// Returns a logging level object corresponding to the given name. If the /// name is invalid, an object of logging level DEBUG (the minimum debug @@ -143,7 +143,7 @@ public: /// \return Pointer to the desired logging level object. static LevelPtr toLevelLS(const LogString& sArg); - /// \param Convert String to Logging Level + /// \brief Convert String to Logging Level /// /// Returns a logging level object corresponding to the given name. If the /// name is invalid, the given default is returned. diff --git a/src/lib/nsas/hash.h b/src/lib/nsas/hash.h index 0290c267be..85b82c3392 100644 --- a/src/lib/nsas/hash.h +++ b/src/lib/nsas/hash.h @@ -59,7 +59,7 @@ public: /// sequence could lead to problems in checking results. Hash(uint32_t tablesize, uint32_t maxkeylen = 255, bool randomise = true); - /// \bool Virtual Destructor + /// \brief Virtual Destructor virtual ~Hash() {} diff --git a/src/lib/nsas/hash_table.h b/src/lib/nsas/hash_table.h index e46d687b0f..c4a9913e63 100644 --- a/src/lib/nsas/hash_table.h +++ b/src/lib/nsas/hash_table.h @@ -126,7 +126,7 @@ public: /// /// Initialises the hash table. /// - /// \param CmpFn Compare function (or object) used to compare an object with + /// \param cmp Compare function (or object) used to compare an object with /// to get the name to be used as a key in the table. The object should be /// created via a "new" as ownership passes to the hash table. The hash /// table will take the responsibility of deleting it. diff --git a/src/lib/nsas/lru_list.h b/src/lib/nsas/lru_list.h index 993eb89cc1..b7bd386e1c 100644 --- a/src/lib/nsas/lru_list.h +++ b/src/lib/nsas/lru_list.h @@ -133,7 +133,7 @@ public: /// \brief Set Maximum Size /// - /// \param new_size New maximum list size + /// \param max_size New maximum list size virtual void setMaxSize(uint32_t max_size) { max_size_ = max_size; } diff --git a/src/lib/nsas/nameserver_address.h b/src/lib/nsas/nameserver_address.h index 7752debb34..07b6d4aaf4 100644 --- a/src/lib/nsas/nameserver_address.h +++ b/src/lib/nsas/nameserver_address.h @@ -60,10 +60,10 @@ public: /// pointed to NameserverEntry which contains the address as well as it's /// corresponding index. The user can update it's RTT with the index later. /// - /// \param namerserver A shared_ptr that points to a NameserverEntry object + /// \param nameserver A shared_ptr that points to a NameserverEntry object /// the shared_ptr can avoid the NameserverEntry object being dropped while the /// request is processing. - /// \param index The address's index in NameserverEntry's addresses vector + /// \param address The address's index in NameserverEntry's addresses vector /// \param family Address family, V4_ONLY or V6_ONLY NameserverAddress(const boost::shared_ptr& nameserver, const AddressEntry& address, AddressFamily family): diff --git a/src/lib/nsas/nameserver_address_store.h b/src/lib/nsas/nameserver_address_store.h index 9804a55ad7..98eb2ddd57 100644 --- a/src/lib/nsas/nameserver_address_store.h +++ b/src/lib/nsas/nameserver_address_store.h @@ -60,7 +60,7 @@ public: /// tests) should it use to ask questions. /// \param zonehashsize Size of the zone hash table. The default value of /// 1009 is the first prime number above 1000. - /// \param nshash size Size of the nameserver hash table. The default + /// \param nshashsize Size of the nameserver hash table. The default /// value of 3001 is the first prime number over 3000, and by implication, /// there is an assumption that there will be more nameservers than zones /// in the store. diff --git a/src/lib/nsas/nameserver_entry.h b/src/lib/nsas/nameserver_entry.h index f6c2e8ce87..77937d19dc 100644 --- a/src/lib/nsas/nameserver_entry.h +++ b/src/lib/nsas/nameserver_entry.h @@ -151,7 +151,7 @@ public: /// Updates the RTT for a particular address /// /// \param address Address to update - /// \param RTT New RTT for the address + /// \param rtt New RTT for the address void setAddressRTT(const asiolink::IOAddress& address, uint32_t rtt); /// \brief Update RTT of the address that corresponding to the index