PlainSocketImpl.c revision 0
f30ee734ac0ee8b792c77ab3bc42494fcddb1508hajma * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
f30ee734ac0ee8b792c77ab3bc42494fcddb1508hajma * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
f30ee734ac0ee8b792c77ab3bc42494fcddb1508hajma * This code is free software; you can redistribute it and/or modify it
f30ee734ac0ee8b792c77ab3bc42494fcddb1508hajma * under the terms of the GNU General Public License version 2 only, as
f30ee734ac0ee8b792c77ab3bc42494fcddb1508hajma * published by the Free Software Foundation. Sun designates this
f30ee734ac0ee8b792c77ab3bc42494fcddb1508hajma * particular file as subject to the "Classpath" exception as provided
f30ee734ac0ee8b792c77ab3bc42494fcddb1508hajma * by Sun in the LICENSE file that accompanied this code.
f30ee734ac0ee8b792c77ab3bc42494fcddb1508hajma * This code is distributed in the hope that it will be useful, but WITHOUT
f30ee734ac0ee8b792c77ab3bc42494fcddb1508hajma * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
f30ee734ac0ee8b792c77ab3bc42494fcddb1508hajma * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* CA 95054 USA or visit www.sun.com if you need additional information or
#include <errno.h>
#include <string.h>
#ifdef __linux__
#include <netdb.h>
#include <stdlib.h>
#ifdef __solaris__
#include <fcntl.h>
#ifdef __linux__
#include "jvm.h"
#include "jni_util.h"
#include "net_util.h"
#include "java_net_SocketOptions.h"
#include "java_net_PlainSocketImpl.h"
static int getMarkerFD()
#ifdef AF_INET6
if (ipv6_available()) {
if (server_fd < 0) {
#ifdef AF_INET6
if (ipv6_available()) {
if (connect_fd < 0) {
return connect_fd;
"Ljava/io/FileDescriptor;");
"Ljava/net/InetAddress;");
"Ljava/net/ServerSocket;");
int fd;
CHECK_NULL(c);
#ifdef AF_INET6
if (ipv6_available()) {
sizeof(arg));
* Signature: (Ljava/net/InetAddress;I)V
int len = 0;
#ifdef AF_INET6
if (timeout <= 0) {
#ifdef __solaris__
errno = 0;
if (connect_rv > 0) {
int optlen;
if (connect_rv != 0) {
if (connect_rv != 0) {
int optlen;
#ifndef USE_SELECT
errno = 0;
struct timeval t;
errno = 0;
if (connect_rv >= 0) {
if (timeout <= 0) {
connect_rv = 0;
if (connect_rv == 0) {
&optlen) <0) {
if (connect_rv != 0) {
if (connect_rv < 0) {
#ifdef __linux__
if (localport == 0) {
* Signature: (Ljava/net/InetAddress;I)V
int fd;
int len;
if (NET_InetAddressToSockaddr(env, iaObj, localport, (struct sockaddr *)&him, &len, JNI_TRUE) != 0) {
if (localport == 0) {
int fd;
* Signature: (Ljava/net/SocketImpl;)V
int port;
int len;
int ret;
if (timeout <= 0) {
if (ret == 0) {
if (newfd >= 0) {
if (timeout) {
if (timeout <= 0) {
if (newfd < 0) {
return ret;
int fd;
} optval;
if (fd < 0) {
switch (cmd) {
if (on) {
#ifdef __solaris__
int fd;
} optval;
if (fd < 0) {
int len = 0;
int port;
switch (cmd) {
return optval.i;
char *buf;
int n, fd;
if (n == JVM_IO_ERR) {
if (n == JVM_IO_INTR) {