History log of /dalvik/libcore/luni/src/main/native/org_apache_harmony_luni_platform_OSNetworkSystem.cpp
Revision Date Author Comments
be9b70fd44be03d425611bd94ea092ce96d1f394 16-Mar-2010 Carl Shapiro <cshapiro@google.com> Replace a use of index with strchr.

Change-Id: I2c1238bc1bd0945533712d0d74a761721b8408a3
7f4a5eccf19468e6ba8c132abc34e0670cc7cdfa 28-Jan-2010 Elliott Hughes <enh@google.com> Fix jniThrowRuntimeException for C callers, add jniThrowNullPointerException.

...and switch all NPE throwers over to the helper.
4706baba5f4ac4354d0fba857bb05d60be0a29d5 20-Jan-2010 Elliott Hughes <enh@google.com> One true way to query "java.net.preferIPv6Addresses".

Also stop querying and passing this boolean to code that doesn't care. (We
sort our InetAddress[]s appropriately, so most code doesn't need to worry
about this.)

Bug: http://code.google.com/p/android/issues/detail?id=5903
5d26339aed33942ba82bfdb79e1b7e9a832c96a7 26-Nov-2009 Elliott Hughes <enh@google.com> DO NOT MERGE: backport the IPv6 NetworkInterface/multicast fixes.

This is a backport of the minimal changes from master (flan) to fix IPv6
multicasting. Specifically, it fixes NetworkInterface to report IPv6 addresses,
it fixes GenericIPMreq so we pass the interface indexes down to native code,
it replaces our old copy of harmony's MulticastSocketTest with the current
upstream version (to avoid bogus failures), and it brings back one small
"unrelated" fix to OSNetworkSystem.cpp that's necessary to prevent failures
in later parts of tests we used to fail too early to notice secondary
problems.

This passes all the (fixed) MulticastSocketTest tests, causes no regressions
in the whole net.AllTests suite, and fixes the user-submitted application
that started the investigation.

Bug: 1750581
72b1f30305ca518b180d2ebf0eb8a4b20aae6155 23-Nov-2009 Elliott Hughes <enh@google.com> Add a comment.
18090720f97d2fe718f11d0944b623676bf6b78b 20-Nov-2009 Elliott Hughes <enh@google.com> Rewrite NetworkInterface's JNI for IPv6.

The old ioctl SIOCGIFCONF implementation of getNetworkInterfaces only returns
IPv4 addresses. Now we've switched everything over to IPv6, that's not good
enough. This change (a) implements glibc/BSD-like getifaddrs(3)/freeifaddrs(3)
for Android, and (b) rewrites our getNetworkInterfaces to use that method. Of
particular note is that we now do more of the work in Java. The JNI hands back
a Java equivalent of getifaddrs(3)'s linked list of ifaddrs structs. The new
package-private java.net.InterfaceAddress class serves as Java's "struct
ifaddrs".

The old implementation was also broken: SIOCGIFCONF doesn't actually return
interface indexes from the kernel as the old code believed, so we were
pulling the address family out of the IPv4 address it returned, leading
us to assign the index 2 to all network interfaces. This caused all kinds of
weird behavior later.

I also had to fix GenericIPMreq so that its interface index field is actually
set. The native code gets passed one of these objects when setNetworkInterface
is called, so it's kind of important that the object identify which interface
it's supposed to correspond to.

I've also added missing copyright headers.

This fixes all of the harmony tests on the simulator and on the device. It
fixes several but not all of the jtreg MulticastSocket and IPv6 tests.
f8e2929ab07550a5495973a4f50eb3ecb16ef3bd 14-Nov-2009 Elliott Hughes <enh@google.com> Don't allocate arbitrary-length buffers on the stack.

A new LocalArray C++ class lets us specify a "reasonable" amount of stack to
use, but transparently fall back to using the heap if we need more space.

The three places I've chosen to use LocalArray in this patch are fairly
random; all they have in common is that they're the places where we call
GetStringUTFRegion. There are more places LocalArray will be useful: the
java.io.File JNI in particular.

Bug: 2257819
72e93344b4d1ffc71e9c832ec23de0657e5b04a5 13-Nov-2009 Jean-Baptiste Queru <jbq@google.com> eclair snapshot
0623da9506227142603766602a554d822e6170b5 12-Nov-2009 Elliott Hughes <enh@google.com> Remove OSNetworkSystem.oneTimeInitialization.

Do this work at JNI registration time, as we do for almost everything else.
(I did this to rule out a warning from the dalvikvm deadlock prediction
code, which doesn't like the unusual lock ordering at initialization time,
and although it didn't make any difference to that, I prefer to have a
defined static order of initialization.)
f46138362aba4a424059b8bc8cc2d2fcc6d3ee66 12-Nov-2009 Elliott Hughes <enh@google.com> Fix a buffer overrun in OSNetworkSystem.

Given an IPv6 address in a non-standard (Java-specific) form, we used to
overrun an on-stack buffer that was assuming the standard (shorter) form.
Make the buffer large enough for both forms, and reject anything that's
still too large.

Found by Inet6AddressTest.
994b254e006f14e7508aac43c773fe2e34a5167e 05-Nov-2009 Elliott Hughes <enh@google.com> More OSNetworkSystem cleanup.

Handle select(2) errors by throwing exceptions from native code (which is
simpler and provides more useful detail messages).

Factor out exception throwing commonality. This is probably ready for JNIHelp.h
now.

Remove sockSelect. Simplify selectWait by observing that it's only ever called
with a "read" fdset.

Remove a little more SOCKERR_* cruft.

Remove a few unused #defines.
5cae54d2a5d6fef88fb456185e64a9df8dfa6ac5 05-Nov-2009 Elliott Hughes <enh@google.com> More OSNetworkSystem cleanup.

Fix danfuzz's BSD woes by removing uses of non-standard s6_addr32,
replace isMappedAddress with IN6_IS_ADDR_V4MAPPED, and change
convertMappedToIpv4 to reduce duplication in its callers.

Remove the TODO suggesting we consider inet_ntop instead of
getnameinfo; Ulrich Drepper says there's never any reason to
do that: http://people.redhat.com/drepper/userapi-ipv6.html

Remove our last use of sockaddr_in in favor of sockaddr_storage,
so we never have to wonder "is that big enough?" again.

Explain why we convert IPv4-mapped addresses to IPv4 addresses
when there's no obvious reason to do so.

Fix another user of the SOCKERR_* cruft.

Address the FD_ISSET and what-exception-to-throw-on-BSD comments
from danfuzz's last patch.
ae217995055c307813c58644943f8e03c69fa2f2 05-Nov-2009 Dan Bornstein <danfuzz@android.com> Only compile in multicast support on Linux, for the time being.

The calls and structs provided by the underlying platform for
multicast aren't yet exactly well-established POSIX standards, and the
current Linux code is still not considered to be super-robust, and as
such it isn't a good idea to try to duplicate its functionality for
other platforms. We will revisit the issue once the Linux side has
matured a bit.

Change-Id: I630086e22f6980726fd4523cb60dfc8c9fb9b011
222120193f2a5a769fbdb4c9ba714f900afab71a 03-Nov-2009 Elliott Hughes <enh@google.com> Kill OSNetworkSystem.inheritedChannelImpl.

This code is broken (and more broken than upstream), and not obviously relevant
to our platform. Let's make it clear that all this currently does is return
null.

The changes in the Java side bring us back in sync with upstream.
070d4af3e970e1c619edd6d5cb919b8ee9901a45 29-Oct-2009 Dan Bornstein <danfuzz@android.com> Some more adjustments to deal with building for a BSD(-like) target.

Change-Id: I5e33c3db160ae3af6e324492e0b6a7a0dfb9719b
e6f774525980167d4324eaf1a34bef4b303bcbd3 31-Oct-2009 Elliott Hughes <enh@google.com> More OSNetworkSystem cleanup.

valgrind didn't like what we were doing here, specifically the way we
were setting ss_family to AF_INET if getsockopt IP_MULTICAST_IF didn't
return an AF_INET address, and ignoring the fact that the rest of
the sockaddr_storage doesn't necessarily correspond to an AF_INET address.
Linux seems to return an AF_UNSPEC address (rather than INADDR_ANY) if we
haven't set a multicast interface, so we have to do the conversion ourselves.

More disturbingly (and unfixed by this patch) we sometimes see ss_family
come back as 127 (when AF_MAX is 32 on our system). My guess is that the
kernel is just handing back bad data we gave it earlier, but I'll come back
to see about fixing multicast properly later.

I've inlined socketAddressToString into osNetworkSystem_byteArrayToIpString,
its only caller, because it's clearer that way now we've simplified the
division of error handling between the two.

I've brought getSocketLocalAddressImpl and getSocketLocalPortImpl in line
with each other and changed them to at least log errors. I've also added
a new test that fails, to demonstrate that this implementation is broken
as designed.

I've changed the name of JAVASOCKOPT_IP_MULTICAST_IF to match the Java
constant.

I've fixed the exception we throw if we're asked to convert a bad address
family's address from code that can't throw IOException --- AssertionError
doesn't have a String constructor. Really, we need to kill this code, so
I've added a TODO.

I've also made a real push to get rid of most of the SOCKERR_*-based error
reporting. (I had a transient failure with a meaningless error message
that sent me to the source to work out which errno it was actually
trying to report.)

I've changed setTTL to call setTimeToLive, and change the implementation
of the latter to pass Integer rather than Byte to the native implementation,
since that's what the native code needs anyway and native Byte support was
only for TTL.

Bug: 2225748
bfe0f4ba3c0f170520f57c3d8d24954877e9a0b8 27-Oct-2009 Elliott Hughes <enh@google.com> Remove OSNetworkSystem.sendStream and all use of ErrorCodeException.

Removing OSNetworkSystem.sendStream brings us in line with harmony. I've
also rewritten writeSocketImpl to not make a temporary copy of the data it's
going to send.

The weird code in writeSocketDirectImpl that threw ErrorCodeException turns out
to be a very awkward way of returning zero to the only two callers that are
paying attention. (Harmony actually calls the equivalent of this code every
time it throws SocketException from native code, but these two callers were
the only places that checked for the special case.)
024da70f6b8fc46494278165f73f8baedcbc7b70 27-Oct-2009 Dan Bornstein <danfuzz@android.com> The officially sanctioned way to get memcpy() is to #include <string.h>.

Change-Id: Ie157d9305df5f9b86a09ea2224666fd2c054cda4
f3029c5855474c107861ce671b25fa119a6b4a51 22-Oct-2009 Elliott Hughes <enh@google.com> Remove OSNetworkSystem.receiveStream.

Harmony removed this some time ago, and -- if we change our read/readDirect
implementations slightly -- we can too.

I've also added some bounds checking in the Java so we don't ask native code
to perform a buffer overrun for us.

I've also rewritten the native readSocketImpl to use GetByteArrayElements and
ReleaseByteArrayElements rather than its own custom stack/heap allocation and
arbitrary 64KiB limit. (As far as I can tell from the harmony history, the
limit dates from when they always read into an on-stack buffer, and was never
removed.)

I've also brought us in line with harmony so we only pass 'address' to
readDirect, rather than 'address' and 'offset'.

I've changed SocketTest to match upstream and -- since they pulled out some
of the tests into a new file -- I've added their UnixSocketTest so we don't
miss out. Our old SocketTest's test_getInputStream is the only test my new
code doesn't pass, but I think the old SocketTest was broken and the new
SocketTest/UnixSocketTest is correct.

I've also brought us back into line with harmony's MulticastSocketTest. With
the up-to-date tests, the new code behaves the same as the old code. (With
our old tests, the new code fails the joinGroup test with a
NullPointerException instead of a junit comparison failure.)
7d9006a13e62bea5a019d29faeddb222b974942b 21-Oct-2009 Elliott Hughes <enh@google.com> More OSNetworkSystem cleanup.

Rewrite OSNetworkSystem.connect in terms of connectStreamWithTimeoutSocketImpl
in Java rather than in native code. Remove OSNetworkSystem.connectSocketImpl.
Make INetworkSystem.connect void, since the return value is always 0.

Use TEMP_FAILURE_RETRY rather than explicit do loops to retry interrupted
system calls.

Fix peekDatagramImpl to actually update the byte[] in the passed-in
InetAddress.

Stop pulling the int fd out of the FileDescriptor each time round the loop
in sendStreamImpl and sendDatagramImpl2.

More tiny steps towards eliminating the SOCKERR_ nonsense in favor of errno.

Prefer sizeof(variable) to sizeof(type).

Remove a few more superfluous "struct" keywords.
73fd1714c1a310d2c29d9e458a6c8eb64a143aed 20-Oct-2009 Elliott Hughes <enh@google.com> Fix OSNetworkSystem.acceptImpl error handling; additional clean-up.

The main reason for this patch is that acceptImpl was checking the wrong
return code.

I've also removed the BADSOCKET and UNKNOWNSOCKET errors because they were
being used interchangeably with the BADDESC error and weren't genuinely
meaningful.

I've also removed the bogus checks for 0 as a file descriptor, which is
perfectly valid (if unlikely).

I've factored this common snippet out.
57ac2250b927cae01dc3858c0fe3b2af9bbec743 17-Oct-2009 Elliott Hughes <enh@google.com> Improve error handling in InetAddress native code.

Fix a bug where we changed the return values of functions such
as byteArrayToSocketAddress without changing the logic in the
callers that's supposed to distinguish success and failure.
For simplicity, I've switch all of these functions over to
returning bool, and I've gone through all the callers to ensure
we're using the right check now. (This is the majority of the
diff.)

Also switch to throwing IllegalArgumentException instead of SocketException
when we find ourselves with a bad byte[] --- before we were throwing
a checked exception we weren't allowed to (from native code, which
can't actually be checked statically) and then trying to cover up
in Java.

I've also simply removed one case where we were trying to mask an
OutOfMemoryError with a SocketException.

I also removed dead code in socketAddressToString: this function's
sole caller always passed false for withPort. This makes the
temporary variable and the copying (which was unsafe) unnecessary.

In instances where I was already changing the code, I've removed
bogus "handle == 0" failures, but I'll come back and remove all
the other instances in another patch.

Since I was in connectSocketImpl, I've removed the dead second half
of that method.
dadd93d416861fe5bfa1dd32cc54e9e21043fc09 06-Oct-2009 Elliott Hughes <enh@google.com> Don't use GetPrimitiveArrayCritical around network operations.

This code seems to have been using GetPrimitiveArrayCritical to
work around the fact that it was supply JNI_ABORT on release,
where it really wanted GetByteArrayElements and to keep its
changes (since the whole point of the byte[] was to keep state
between calls).
a4c6827834f0b0fe50b877153523c3e11c2ab4d7 06-Oct-2009 Elliott Hughes <enh@google.com> Remove dead code.
e652b123d2d65d40e5f51c0145cc453ea88631dc 02-Oct-2009 Lorenzo Colitti <lorenzo@google.com> Make sure res is NULL if getaddrinfo fails.
78833605d526ade07d452d2505a792a9874b2a60 03-Oct-2009 Elliott Hughes <enh@google.com> Refactor java_net_NetworkInterface.cpp for clarity.

All I wanted to do was remove the SOCKERR_ mess, but things got out of hand.
There's still plenty of stuff that could be cleaned up, but nothing that can't
wait. I'm only doing this to make things easier for the IPv6 changes.

This patch:
* removes the SOCKERR_ mess which was causing vague "Operation failed"
IOExceptions; we now use the actual errno value of whatever caused the failure.
* simplifies memory management so we don't have to do lots of cleanup on
every exit from each function.
* simplified fd management for the same reason.
* reduces the use of the intermediate structure, going straight to Java objects
in places. (This is the unfinished work: we should get rid of the intermediate
representation. It's not useful.)
* replaces structInToJavaAddress and structInToInetAddress with a call to the
better socketAddressToInetAddress from OSNetworkSystem.cpp.
* uses more intention-revealing variable and function names.
* removes attempts to throw exceptions when perfectly good exceptions have
already been thrown.
* removes filtering of interfaces that aren't up. The RI doesn't do this
filtering, there's no reason to do it, and it's always going to be a race
condition anyway.
* removes untrue comments.
* removes a lot of inexplicably empty lines.
681d27ea8299b4d8125e826b405e4b926d6ee65e 02-Oct-2009 Lorenzo Colitti <lorenzo@google.com> Make sure res is NULL if getaddrinfo fails.
60d3a548d07ce5161c91b50bb374b127ccec9b72 30-Sep-2009 Elliott Hughes <enh@google.com> Remove adb networking support from dalvik/libcore.

There's more to be removed from other projects, but this should probably
come out first.

Bug: 1122968
f94c5d77ab659bfc1644b524fc006f24cbf6f694 01-Oct-2009 Lorenzo Colitti <lorenzo@google.com> More multicast fixes.

1. Make native code properly set network interface indexes that are used for
new-style multicast socket options.
2. For IP_MULTICAST_IF, check that the address is IPv4, not the socket.
3. Remove a @KnownFailure annotation for a test that now passes.

This removes one test error and changes it into a more benign failure. The
remaining test failures seem to be due to Linux bening permissive about which
interfaces you can receive multicast traffic on, which is probably good enough
for now.

Change-Id: Id1fddee338addcfce821672b983485c7dd4983d4
d6a4cc340b98980f292168a34458015344ee6646 01-Oct-2009 Lorenzo Colitti <lorenzo@google.com> Fixes for socket options on multicast sockets.

1. Properly pass get/setsockopt the pointer to the socket option instead of the
pointer to the pointer to the option. This was not caught at compile time
because it's a void *.
2. Handle IPv4 multicast addresses on IPv6 sockets. This is important because
current devices create IPv6 sockets by default.
3. Use the proper options for IPv6 multicast (i.e., IPV6_{ADD,DROP}_MEMBERSHIP
instead of IP_{ADD,DROP}_MEMBERSHIP)
4. Use integers instead of bytes when getting or setting the multicast TTL
because that's what the Linux kernel uses.

These fix 10 of the 11 MulticastSocketTest failures. Also, minor changes:

1. Add ifdefd-out logging functions for get/setsockopt.
2. Change all instances of IPPROTO_{IP,IPv6} to SOL_{IP,IPV6} in get/setsockopt
calls. Even though the values are the same (so the code worked), this way is
more correct.

Change-Id: Iea75a523d7e71f0b361a42c0e39d3ef075dc7ff4
e96ca9b63920887425c6d4603a974a607b8a2b8a 27-Sep-2009 Elliott Hughes <enh@google.com> Throw meaningful IOException instances from native code.

The Java side of OSFileSystem was throwing IOExceptions with no detail
message. If we throw from the native side instead, we can supply
meaningful explanations. This turned up a couple of bugs:

* read, readDirect, readv, writev, and ttyRead would only throw IOException
if they returned < -1, which is impossible. (writev was probably a copy & paste
from readv, and the reads were probably confused by the impedence mismatch
between Unix's use of 0 to mean end of file and -1 to mean error, and Java's
use of -1 for end of file.)

* inconsistent checking for null byte[]s passed in.

* read and write would retry on EINTR, but readDirect and writeDirect wouldn't.

* we'd silently truncate seek/lock/truncate offsets that didn't fit in 32 bits;
we now throw an IOException instead.

It also means a few native functions become "void" because errors are now
reported by throwing exceptions, and the Java functions that used to call them
are no longer needed.

Also change ProcessManager to use jniThrowIOException, remove the unused
throwIOExceptionStr from OSNetworkSystem.cpp, and remove the KnownFailure from
FileTest's test_delete, now we have a fixed version of yaffs that won't
rmdir(2) non-empty directories.

Bug: 1542253
1b4ca183763171fdd5228d6184ad77a61046bbea 19-Sep-2009 Lorenzo Colitti <lorenzo@google.com> Manual merge of change I3665f82b into master.
1569390907c0c47985f72d1f30f694ab5f0017d9 19-Sep-2009 Lorenzo Colitti <lorenzo@google.com> Use native code to convert strings to IP addresses.

1. Add an ipStringToByteArray method to the OSNetworkSystem interface and
provide a native implementation for it.
2. Change InetAddress to use the new method.
3. Remove a mid-sized chunk of Inet6Util, which is now redundant.
4. Remove the KnownFailure annotations from the InetAddress, InetAddress and
Inet6Address tests that expected 1.2.3, 1.3 and 3 to be valid IPv4
addresses. These tests now pass again.
5. Removed an unused native method.
6. Added a comment to the top of the native socket implementation to the effect
that the file is significantly different from harmony.

Change-Id: I3665f82b00ebc089e9133cc6166dda5a99fa10e4
c18a33fd3b05e720cd6b6e3215c99546f17985e6 19-Sep-2009 Lorenzo Colitti <lorenzo@google.com> Manual merge of eclair change I26548922 into master.
b663ba5604080f14f682b2defed9bea57346d5b5 18-Sep-2009 Lorenzo Colitti <lorenzo@google.com> Use native code to convert IP addresses to strings.

- Add a byteArrayToIpString method to the INetworkSystem interface and implement
it in native code
- Fix the native code so it does better error reporting
- Change InetAddress's getHostAddress, getHostName and getCanonicalHostName
methods to use it and remove the IPv4-only Java implementations
- Remove Inet6Util.createIPAddrStringFromByteArray
- Fix InetAddress so getByAddress(null) throws UnknownHostException instead of
NullPointerException for compatibility with the RI.

Change-Id: I26548922e9eed63b295173456183c4ab3ce20718
cda2fae64ff87cc515263e343f332988c61a6476 18-Sep-2009 Elliott Hughes <enh@google.com> Fix heap corruption in nio select(2) code.

The active ingredient in this change is that we now test that the fd isn't -1,
used to represent an invalid fd. There's a race condition where a socket can be
closed between SelectorImpl.prepareChannels and the native code. This caused us
to write to the -1th element of a heap-allocated structure, leading to SIGSEGV.

I've also removed the check for an empty fd_set. It was broken before and will
never have fired, but I don't think it makes sense to fix it, given this race
condition.

The race can't be fixed because the implementation is documented to close the
socket channel and *then* cancel the selection key.

This patch also removes various dead functions and tidies up timeval usage.

Bug: 2093094
c93088f3addb0a81b654b1c9f609bc2bd31fe39a 16-Sep-2009 Lorenzo Colitti <lorenzo@google.com> Make getHostByAddr and getHostByName return the proper object type.

Change-Id: I51c75205095b7fe093ccb4451bbf7cc6a287bc49
89dc615b7ba0109ff161e95791511675a64fbee5 09-Sep-2009 Lorenzo Colitti <lorenzo@google.com> Simplify networking code initialization using static structures instead of code.
Fix an uninitialized variable.

Change-Id: Id9064a185525bfe072b244ea3d2acb56e5e185cd
f682990ef844e379ed0b1180b7d5d3956d95baa6 11-Sep-2009 Elliott Hughes <enh@google.com> Several small native code fixes.

* Don't throw OutOfMemoryError manually in Adler32/CRC32: the VM does that for
us if GetPrimitiveArrayCritical needs, but fails, to allocate memory.

* Don't use anything but NULL for the "iscopy" argument to Get*ArrayElements.
The other users of this argument (removed earlier this week) were under the
mistaken impression that it's an "in" parameter rather than an "out" parameter,
and since these remaining callers aren't actually using the result, let's
remove the cruft.

* Move the null check in harmony_io_openImpl for "path" to come *before* the
first dereference.

* Make harmony_io_ttyReadImpl just delegate to harmony_io_readImpl since,
apart from the zero-length read check, they were identical.

* Remove the dead function throwIOExceptionStr from the OpenSSLSessionImpl
native code.

Tested on sapphire-eng.
1ef5b44eaf9170686d28d564b8d247b3e22cb7ac 09-Sep-2009 Elliott Hughes <enh@google.com> Use Get*ArrayRegion/Set*ArrayRegion instead of Get*ArrayElements.

This fixes all instances in the networking code, but doesn't address similar
patterns, nor non-networking code. This seemed like a reasonably-sized
meaningful chunk. Tested on sapphire-eng.

Bug: 1639287
f2f6f8b8d47733be0f291612730690b5ce379257 04-Sep-2009 Lorenzo Colitti <lorenzo@google.com> Document that createSocketFileDescriptor throws an exception on failure.

Change-Id: Ic002b4dc8c40d798316afbab7a14bd81593e2541
78426a211bdde90a6bfe219a77c4449c66e98302 04-Sep-2009 Lorenzo Colitti <lorenzo@google.com> If an error occurs when creating a socket, don't call any more JNI methods
(thus causing a segfault) but return immediately.

Change-Id: I7d05997e38e631200542f85eba16b854d488d584
d0d6c15d20ba9ba49b5a2ea71de737c182ab1410 02-Sep-2009 Lorenzo Colitti <lorenzo@google.com> Unbreak Dalvik VM initialization due to a native method that expects to be able
to call an InetAddress no-args constructor. This constructor was package-private
and was recently removed. This method is horribly complex and should go away (it
probably doesn't even work, due to it attempting to find a class known as
"java/io/FielDescriptor"), but it needs to be fixed for now.

Change-Id: I56b1e0e07f4c97af82e0a4f14dfd2d8af16f6b82
3819a76e7c1f49253f0e077bd497f149340c02b8 25-Jul-2009 Jesse Wilson <jessewilson@google.com> Integrate luni module (but not tests) to Harmony r772995.

Notable changes
- Stripped "@since Android 1.0" from many files. Most files
are now 100% the same in Dalvik and Harmony.
- AbstractStringBuilder.reverse() supports surrogates
- AbstractStringBuilder shares less to waste less memory
- Bitset optimized
- BufferedInputStream changed to support unsynchronized close()
- BufferedOutputStream does flushInternal
- BufferedReader supports EBCDIC NEL
- Collections.synchronizedList().indexOf() does a copy for more concurrency
- Classes in nio module changed: DatagramChannelImpl, SocketChannelImpl
and ServerSocketChannelImpl (these depend on internal APIs changed in
this update)
- DataInputStream/DataOutputStream now use a small buffer to limit the
number of times the underlying stream is accessed
- Date now has a minutes offset, more efficient toString()
- ExposedByteArrayInputStream: new internal class
- DeleteOnExit moved to top-level class
- FileDescriptor.isValid() now non-native
- Float, Double lessThan optimized (fix for compare(-0.0F, 0.0F) still pending)
- FileURLConnection now guesses content types from streams
- HashMap iterator changes
- Hashtable iterator changes
- INetworkSystem
- removes bind2(), createMulticastSocket, sendStream(),
- renames createSocket to createStreamSocket
- JarURLConnection rewritten
- LinkedHashMap: new iterator
- Locale, Currency, TimeZone: now use ICU in Harmony, plain Java in Dalvik
- ObjectInputStream: Accessor objects in Harmony, direct native in Dalvik
- ProxyClassFile - many changes
- String - optimized ascii for toLowerCase, toUpperCase, compare
- Timer - rewritten
- TreeMap - rewritten
- URLClassLoader - new
- URLConnection - new guessContentTypeFromStream(), uses org.apache.harmony.awt.www.content
to lookup content type handlers
3a900bbe031b949540ec3ce3a0e8d5b619afe303 12-Jun-2009 Lorenzo Colitti <lorenzo@google.com> Use RFC3493-conformant IPv6 headers.
6c26ab25beca7f6f810d1da4a1200b3f89c50ed3 16-Jun-2009 Lorenzo Colitti <lorenzo@google.com> Don't throw away the return value of connect().
d92947a455370c625e17242b8b5f0202b0aafc02 15-Jun-2009 Lorenzo Colitti <lorenzo@google.com> Define wrappers for connect() and bind() to support IPv6.
f3bdad5a430db777aa9bde8d3bcc8ac978da5ffa 06-Jun-2009 Mathias Agopian <mathias@google.com> remove all references to LogSocket.h
bd044e0df405c771e1d4c3f14f870ffa78a20c0f 05-Jun-2009 Lorenzo Colitti <lorenzo@google.com> Fix the sim build on systems that have old versions of the glibc headers.
ee7d15a6e4dcfe5fa2996d7aee263adeea8b6736 04-Jun-2009 Lorenzo Colitti <lorenzo@google.com> Unbreak sim build.
deeb93c5386df94d90e4629167711eddb02057f9 27-May-2009 Lorenzo Colitti <lorenzo@google.com> Make native socket code address-independent in preparation for IPv6 support.
742daa3d55ef09ec443fea5decaa991857b67a52 25-Mar-2009 Mike Wakerly <> Automated import from //branches/donutburger/...@140825,140825
0abea85d4b87e765382e1235800cf48c8a689d1d 25-Mar-2009 Mike Wakerly <> Automated import from //branches/master/...@140826,140826
99409883d9c4c0ffb49b070ce307bb33a9dfe9f1 19-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import //branches/master/...@140412
f6c387128427e121477c1b32ad35cdcaa5101ba3 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
f72d5de56a522ac3be03873bdde26f23a5eeeb3c 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
4c1a2915e40eceeb68dbc323d28b8bf8763af83b 20-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@127101
89c1feb0a69a7707b271086e749975b3f7acacf7 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
2ad60cfc28e14ee8f0bb038720836a4696c478ad 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution