Commit Graph

80 Commits

Author SHA1 Message Date
Geremy Condra
5a095ef287 am 03539a36: Merge "Ensure that the port number and TXID are properly randomized." into jb-dev
* commit '03539a36b634bdfa61c06277cf25e0ca8e3105ba':
  Ensure that the port number and TXID are properly randomized.
2012-05-30 11:09:05 -07:00
Geremy Condra
b23f193dcc Ensure that the port number and TXID are properly randomized.
This fix reads from /dev/urandom to get the required entropy.

Bug: 6535492
Change-Id: Ibc2fec3f71a67607b608ad9b767b0b6504993c1d
2012-05-24 15:26:12 -07:00
Elliott Hughes
53daf4757d am 73a6566d: Merge "Remove expired dns cache entries before removing oldest"
* commit '73a6566da337db50cfc73c369d774ac1905a30c2':
  Remove expired dns cache entries before removing oldest
2012-05-07 13:59:59 -07:00
Elliott Hughes
73a6566da3 Merge "Remove expired dns cache entries before removing oldest" 2012-05-07 10:41:53 -07:00
Robert Greenwalt
c59ba4595b Use new binary code format
3-digits + null.  Old was 3-digits + space + null.

Change-Id: If5fdf9ced073f432ace3a76858025ad651c74e3d
2012-03-09 11:50:46 -08:00
Selim Gurun
06e1831f19 Prevent potential stall on dns proxy operations.
Update wire protocol to return and process error code first.
This will make sure dns proxy operations do not stall when
an internal error happens.
Also fix a compiler warning.
Also fix a potential buffer overflow.
And use correct types (uint32_t) rather than int when reading from network.

Change-Id: I9f99c16d6fd5e9137491a4d1b293a7c78e31b9c3
2012-03-07 15:09:05 -08:00
Kenny Root
1fb6662d1a Revert "Use the new NativeDaemonConnector style."
The other changes relating to this were already reverted.

This reverts commit 1625c7a837
2012-02-24 11:04:42 -08:00
Robert Greenwalt
1625c7a837 Use the new NativeDaemonConnector style.
Prepend a 0 to match the new sequence-number style, though this module
doesn't really need/use it.

bug:5864209
Change-Id: Iacbcddaced6fe8bb01d186596a916e4fb4805fef
2012-02-07 11:53:55 -08:00
Robert Greenwalt
52764f5546 Increase the size of the system-wide dns cache
32 enteries perhaps was ok for per-process caching with ipv4 only
but adding ipv6 records makes it effectively 16 entries and making
it system wide makes is pretty useless.  Increasing to 640 entries.

bug:5841178
Change-Id: I879f8bf4d3c4d8c1708bb46d46a67c1f64b1861f
2012-01-25 15:36:58 -08:00
David 'Digit' Turner
79fcc6948d Merge "libc: remove private declarations from <time.h> and <resolv.h>" 2012-01-19 04:15:38 -08:00
Jean-Baptiste Queru
5f926c2679 am b00d7a33: am eae1f1fb: Merge "res_send: Avoid spurious close()s and (rare) failure"
* commit 'b00d7a331c9f2a578a4cfc4dfe0d626aa58fa702':
  res_send: Avoid spurious close()s and (rare) failure
2012-01-17 18:18:29 -08:00
Jean-Baptiste Queru
b00d7a331c am eae1f1fb: Merge "res_send: Avoid spurious close()s and (rare) failure"
* commit 'eae1f1fba33cb105302227b044a14e5abcbe55e7':
  res_send: Avoid spurious close()s and (rare) failure
2012-01-17 18:16:10 -08:00
Jim Huang
87043f9c89 res_send: Avoid spurious close()s and (rare) failure
When looping over the current list of sockets we are connected to,
use getpeername() not getsockname() to find out who the remote
end is.  This change avoids spurious close() and (rare) failure.

Origin: ISC bug #18625 and fixed in libbind 6.0

Change-Id: I5e85f9ff4b98c237978e4bf4bd85ba0a90d768e6
2012-01-14 11:30:00 +08:00
David 'Digit' Turner
208898ee77 libc: remove private declarations from <time.h> and <resolv.h>
This patch is used to remove private C library declarations from the
public headers (that are exported to the NDK). It should *only* be
submitted after all other patches modifying the users of said
private functions have been submitted to the tree, to avoid
breakages.

Change-Id: I0a5e3014f8e3ac9ed8df86a5cdae506337c23252
2012-01-13 14:24:08 +01:00
Robert Greenwalt
e4ade69654 am 82c4be54: am ecd0e95a: Adding a timeout to tcp dns lookup connects.
* commit '82c4be54da0825ebe74b524932c9db733419057a':
  Adding a timeout to tcp dns lookup connects.
2012-01-12 15:05:57 -08:00
Robert Greenwalt
ecd0e95a02 Adding a timeout to tcp dns lookup connects.
TCP isn't supported on some dns servers, which makes the old code
hang forever.

NOT adding a stopship to remove debugging stuff - it was too painful
(14s timeout on failed tcp dns lookups) so we decided not to bother people.

bug:5766949
Change-Id: I381c20c3e11b8e994438d4f7c58ef643cd36554e
2012-01-12 14:26:41 -08:00
Robert Greenwalt
ca6fe7bebe Request both v4 and v6 dns when on secondary net
We can't easily tell the protocol family of the secondary network,
so try both and trust that the carrier has configured dns servers
according to the protocols supported on its network.

bug:5468224
Change-Id: If4f017573d313a6ad8354574076de6d63d43b444
2011-11-22 15:24:44 -08:00
Lorenzo Colitti
f432de2de7 Send both A and AAAA queries if all probes fail.
AI_ADDRCONFIG is currently implemented by trying to connect
to well-known addresses in order to see if IPv4 and/or IPv6
connectivity is available.

In some cases (e.g., walled gardens with no global
connectivity) both probes can fail. If this happens,
query for both IPv4 and IPv6 addresses instead of doing
nothing and failing the query.

Bug: 5284168
Change-Id: I4e3a69ea86fb6d839a6bd31236b98da81e5cbf45
2011-09-28 22:38:08 -07:00
Lorenzo Colitti
b82532d11a Revert "Use framework hints to determine dns query type."
Change Ife82a8d8 broke IPv6 on wifi. Change I4e3a69ea is
an alternate approach that does not require any framework
changes.

Bug: 5284168
Change-Id: Ib52614be3875a2ae2eaedd1be265f90e506eda41
2011-09-28 22:37:41 -07:00
Robert Greenwalt
8af58f0fd4 Use framework hints to determine dns query type.
Instead of checking for IPv4 or IPv6 connectivity, try using pid-specific
hints the framework has left for us.

bug:5284168
Change-Id: Id64d48db3900865a7d58ada8309870c63d6eab12
2011-09-22 11:43:06 -07:00
Robert Greenwalt
7f84da69f8 Add some logging of dns cache operations
Added info about what entries are getting flushed due to ttl or size limits.

Change-Id: I69fb70ce23b5b820f5f1a5738c0f1aa57b6a1127
2011-09-02 07:44:36 -07:00
Robert Greenwalt
777901424f resolved conflicts for merge of 9363d912 to honeycomb-plus-aosp
Change-Id: I555f5c10da9770feacdbece9fd77729d6151bfba
2011-07-26 16:18:52 -07:00
Robert Greenwalt
9363d91218 Add per-interface dns caches.
import of changes 22100 and 23138 from opensource.

Change-Id: I3ce86394323d269272aeb2bebeed4374f171a8cf
2011-07-26 12:59:50 -07:00
Robert Greenwalt
e4197d41bb am fed31359: am f6fcdb2e: am 28de3e59: Merge "Don\'t reset caches when dns props change."
* commit 'fed3135972f9725a44a7d9b3df728e311ac1a130':
  Don't reset caches when dns props change.
2011-07-20 17:20:03 -07:00
Mattias Falk
bad1686e1f Don't reset caches when dns props change.
This happens too frequently.  We should flush a per-interface cache
when it's dns server addrs changes.

Change-Id: I8a691c96ce9a775160ef55ddb8f755d649041583
2011-07-20 15:09:24 -07:00
Robert Greenwalt
8f88cbedc1 am e0a4b678: am cc32fbc3: Merge "Add support for a dns cache per interface"
* commit 'e0a4b67811981ab4c04c437b23c36ae42c444bce':
  Add support for a dns cache per interface
2011-06-27 14:14:07 -07:00
Mattias Falk
23d3e6b21b Add support for a dns cache per interface
Initial commit for dns cache per interface.
Added a type that holds a reference to a
cache and name of associated interface,
address of interface, name server(s)
associated with an interface etc.

New functions to set default interface,
address of name servers etc.

Change-Id: Ie991bc5592fd998409853d8bf77d7fe69035dac5
2011-06-08 15:39:29 +02:00
JP Abgrall
8a51237407 libc: enable IPTOS_MINCOST, fixup gethostbyaddr() proto.
Make netinet/ip.h have IPTOS_MINCOST which matches what
  kernel/common/linux/ip.h has to say.
Fixup gethostbyaddr() 1st arg to match what man has to say.

Change-Id: Iff9647d4a46ea88b1fc32163eb69bb9b27cdf370
2011-06-02 15:28:16 -07:00
Anders Fredlund
dd16182b4b Remove expired dns cache entries before removing oldest
A suggestion how to make a smarter delete function when the cache
is full. First look through the entire cache and remove all entries
which have expired. If none use the old solution and just remove
the last entry in the MRU list.

Change-Id: I5f997ab35290a55dc6e1ddf37d725759edf83d36
2011-05-20 08:12:37 +02:00
JP Abgrall
f8d02d24ed libc: enable IPTOS_MINCOST, fixup gethostbyaddr() proto.
Make netinet/ip.h have IPTOS_MINCOST which matches what
  kernel/common/linux/ip.h has to say.
Fixup gethostbyaddr() 1st arg to match what man has to say.

Change-Id: Iff9647d4a46ea88b1fc32163eb69bb9b27cdf370
2011-05-18 16:53:23 -07:00
David 'Digit' Turner
b6cd6816d2 libc: Fix leak in the DNS thread-specific state.
NOTE: This is a back-port from the internal HC branch.

This patch fixes a leak that occurs when creating a new
thread-specific DNS resolver state object.

Essentially, each thread that calls gethostbyname() or getaddrinfo()
at least once will leak a small memory block. Another leak happens
anytime these functions are called after a change of the network
settings.

The leak is insignificant and hard to notice on typical programs.
However, netd tends to create one new thread for each DNS request
it processes, and quickly grows in size after a > 20 hours.

The same problem is seen in other system processes that tend to
create one thread per request too.

The leak occured becasue res_ninit() was called twice when creating
a new thread-specific DNS resolver state in _res_get_thread().

This function could not properly reset an existing thread and was
leaking a memory block.

The patch does two things:

- First, it fixes res_ninit() to prevent any leakage when resetting
  the state of a given res_state instance.

- Second, it modifies the _res_get_thread() implementation to
  make it more explicit, and avoid calling res_ninit() twice
  in a row on first-time creation.

Fix for Bug 4089945, and Bug 4090857

Change-Id: Icde1d4d1dfb9383efdbf38d0658ba915be77942e
2011-05-18 13:48:20 +02:00
Brian Carlstrom
be7f5da0bd Tracking change to dns proxy protocol
The gethostbyaddr code in system/netd now expects a string address
from inet_ntop, not raw bytes, in order to properly pass addresses
containing null and probably spaces and newlines characeters as well.

Bug: 4344448
Change-Id: I8ec0eab94d5b1d38e9269ba3afb2825e946f8df3
2011-04-29 16:43:16 -07:00
Brian Carlstrom
c5a3f7700b Tracking change to dns proxy protocol
The gethostbyaddr code in system/netd now expects a string address
from inet_ntop, not raw bytes, in order to properly pass addresses
containing null and probably spaces and newlines characeters as well.

Bug: 4344448
git cherry-pick -e c13fa640ee
2011-04-29 10:02:48 -07:00
Brian Carlstrom
c13fa640ee Tracking change to dns proxy protocol
The gethostbyaddr code in system/netd now expects a string address
from inet_ntop, not raw bytes, in order to properly pass addresses
containing null and probably spaces and newlines characeters as well.

Bug: 4344448
Change-Id: I935abbbe522d96b64a5f975c7937e3aed3f7b335
2011-04-27 11:55:43 -07:00
Brad Fitzpatrick
a34694d394 am 09db590d: am 9b6e8af6: am 3ef36b21: Merge "Use system property to set dns cache size"
* commit '09db590d56ff2b568ea1a0ce265810697f0e0e92':
  Use system property to set dns cache size
2011-04-12 13:28:03 -07:00
Brad Fitzpatrick
09db590d56 am 9b6e8af6: am 3ef36b21: Merge "Use system property to set dns cache size"
* commit '9b6e8af6994fd41f468161dec797354bb7778673':
  Use system property to set dns cache size
2011-04-12 13:18:15 -07:00
Brad Fitzpatrick
3ef36b2115 Merge "Use system property to set dns cache size" 2011-04-11 09:42:30 -07:00
David 'Digit' Turner
02be15039a am aa8f50b4: am 6d46b099: am 2f169162: Merge "libc: Fix leak in the DNS thread-specific state." into honeycomb-mr1
* commit 'aa8f50b404ab0b2c78833387551800fa8448afcd':
  libc: Fix leak in the DNS thread-specific state.
2011-03-25 01:52:17 -07:00
David 'Digit' Turner
6d46b09954 am 2f169162: Merge "libc: Fix leak in the DNS thread-specific state." into honeycomb-mr1
* commit '2f169162462e44d7aa6443e682b15fc756c2e4ad':
  libc: Fix leak in the DNS thread-specific state.
2011-03-25 01:47:43 -07:00
Carl Shapiro
2cc2b2be69 Add some missing includes.
Change-Id: Ieec623c06bc32ec78334f628af25b00c2bccd2e7
2011-03-21 20:01:03 -07:00
David 'Digit' Turner
4661fda2e5 libc: Fix leak in the DNS thread-specific state.
This patch fixes a leak that occurs when creating a new
thread-specific DNS resolver state object.

Essentially, each thread that calls gethostbyname() or getaddrinfo()
at least once will leak a small memory block. Another leak happens
anytime these functions are called after a change of the network
settings.

The leak is insignificant and hard to notice on typical programs.
However, netd tends to create one new thread for each DNS request
it processes, and quickly grows in size after a > 20 hours.

The same problem is seen in other system processes that tend to
create one thread per request too.

The leak occured becasue res_ninit() was called twice when creating
a new thread-specific DNS resolver state in _res_get_thread().

This function could not properly reset an existing thread and was
leaking a memory block.

The patch does two things:

- First, it fixes res_ninit() to prevent any leakage when resetting
  the state of a given res_state instance.

- Second, it modifies the _res_get_thread() implementation to
  make it more explicit, and avoid calling res_ninit() twice
  in a row on first-time creation.

Fix for Bug 4089945, and Bug 4090857

Change-Id: Ie4831a8dbe82be8f07fce5ddd1d36bf95994f836
2011-03-18 18:08:08 +01:00
Mattias Falk
0ee092fb23 Convert cname lenght before use
The length of the cname is sent in big-endian
order. Thus, it has to be converted before used
in android_getaddrinfo_proxy

Change-Id: I1a0cc12780c47f7493fcf06f690515829f88c01e
2011-03-01 12:52:10 -08:00
Mattias Falk
149f7dfe04 Proxy getnameinfo through netd
Proxy the parts of getnameinfo that utilize
the dns cache through netd.

Change-Id: I1d57c451ea6b179c34828cf57a4182b262674003
2011-02-22 08:22:16 +01:00
Mattias Falk
066ecc8f4a Convert cname lenght before use
The length of the cname is sent in big-endian
order. Thus, it has to be converted before used
in android_getaddrinfo_proxy

Change-Id: I1a0cc12780c47f7493fcf06f690515829f88c01e
2011-02-15 08:44:20 +01:00
Mattias Falk
3a4910c616 Use system property to set dns cache size
Use system property ro.net.dns_cache_size to set
the size of the cache. If the system property
is not set the default cache size is defined by
CONFIG_MAX_ENTRIES.

The number of entries in the hash table will be equal
to the number of max entries allowed in the cache.

Change-Id: I77d69d7c178937fa483d0b40512483ad29232d28
2011-02-14 12:41:11 +01:00
Mattias Falk
3e0c5102e6 Add time-to-live (TTL) support to resolver cache
Use the the TTL of the answer as the time a query
shall remain in the resolver cache.

Added some debugging support as well, i.e.
parse answer and print a la dig.

Change-Id: I724d3392245032592f1912f3ca7a81a8987ebbac
2011-02-02 16:40:01 +01:00
David Turner
f03e2d3f31 am 5d45fa40: am 2081fda6: Merge "Only look up A records if the system has IPv4." into gingerbread
* commit '5d45fa4049d9ba03c0d922ece18d1d2dda119dc7':
  Only look up A records if the system has IPv4.
2011-01-21 15:50:23 -08:00
David Turner
5d45fa4049 am 2081fda6: Merge "Only look up A records if the system has IPv4." into gingerbread
* commit '2081fda69a68505c914324797400b1b798516904':
  Only look up A records if the system has IPv4.
2011-01-18 17:34:33 -08:00
David Turner
2081fda69a Merge "Only look up A records if the system has IPv4." into gingerbread 2011-01-18 17:32:02 -08:00
Steinar H. Gunderson
76b6f084ab am 2be18508: am 2e23e292: Backport (simple cherry-pick) d33019030c to gingerbread.
* commit '2be18508f349b74b60b09e1b1118d879afb5928c':
  Backport (simple cherry-pick) d33019030c to gingerbread.
2011-01-17 12:19:01 -08:00