org.apache.tomcat.jni.Address Java Examples

The following examples show how to use org.apache.tomcat.jni.Address. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: AprEndpoint.java    From Tomcat8-Source-Read with MIT License 6 votes vote down vote up
@Override
protected void populateRemoteHost() {
    if (closed) {
        return;
    }
    try {
        long socket = getSocket().longValue();
        long sa = Address.get(Socket.APR_REMOTE, socket);
        remoteHost = Address.getnameinfo(sa, 0);
        if (remoteAddr == null) {
            remoteAddr = Address.getip(sa);
        }
    } catch (Exception e) {
        log.warn(sm.getString("endpoint.warn.noRemoteHost", getSocket()), e);
    }
}
 
Example #2
Source File: AprEndpoint.java    From Tomcat7.0.67 with Apache License 2.0 6 votes vote down vote up
/**
 * Port in use.
 */
@Override
public int getLocalPort() {
    long s = serverSock;
    if (s == 0) {
        return -1;
    } else {
        long sa;
        try {
            sa = Address.get(Socket.APR_LOCAL, s);
            Sockaddr addr = Address.getInfo(sa);
            return addr.port;
        } catch (Exception e) {
            return -1;
        }
    }
}
 
Example #3
Source File: AprEndpoint.java    From tomcatsrc with Apache License 2.0 6 votes vote down vote up
/**
 * Port in use.
 */
@Override
public int getLocalPort() {
    long s = serverSock;
    if (s == 0) {
        return -1;
    } else {
        long sa;
        try {
            sa = Address.get(Socket.APR_LOCAL, s);
            Sockaddr addr = Address.getInfo(sa);
            return addr.port;
        } catch (Exception e) {
            return -1;
        }
    }
}
 
Example #4
Source File: AprSocketWrapperImpl.java    From cloudstack with Apache License 2.0 6 votes vote down vote up
/**
 * Connect this socket wrapper to remote server and start main loop on
 * AprSocketSource stdout link, to watch for incoming data, and
 * AprSocketSink stdin link, to pull for outgoing data.
 */
@Override
public void connect(InetSocketAddress address) throws IOException {
    try {
        inetAddress = Address.info(address.getHostName(), Socket.APR_UNSPEC, address.getPort(), 0, pool);
        socket = Socket.create(Address.getInfo(inetAddress).family, Socket.SOCK_STREAM, Socket.APR_PROTO_TCP, pool);
    } catch (Exception e) {
        throw new IOException("[" + this + "] ERROR: Cannot create socket for \"" + address + "\".", e);
    }

    int ret = Socket.connect(socket, inetAddress);
    if (ret != 0)
        throw new IOException("[" + this + "] ERROR: Cannot connect to remote host \"" + address + "\": " + Error.strerror(ret));

    source.setSocket(socket);
    sink.setSocket(socket);

    // Start polling for data to send to remote sever
    runMainLoop(IN, STDIN, true, true);

    // Push incoming data from server to handlers
    runMainLoop(OUT, STDOUT, false, false);

}
 
Example #5
Source File: AprEndpoint.java    From Tomcat8-Source-Read with MIT License 5 votes vote down vote up
@Override
public InetSocketAddress getLocalAddress() throws IOException {
    long s = serverSock;
    if (s == 0) {
        return null;
    } else {
        long sa;
        try {
            sa = Address.get(Socket.APR_LOCAL, s);
        } catch (IOException ioe) {
            // re-throw
            throw ioe;
        } catch (Exception e) {
            // wrap
            throw new IOException(e);
        }
        Sockaddr addr = Address.getInfo(sa);
        if (addr.hostname == null) {
            // any local address
            if (addr.family == Socket.APR_INET6) {
                return new InetSocketAddress("::", addr.port);
            } else {
                return new InetSocketAddress("0.0.0.0", addr.port);
            }
        }
        return new InetSocketAddress(addr.hostname, addr.port);
    }
}
 
Example #6
Source File: AprEndpoint.java    From Tomcat8-Source-Read with MIT License 5 votes vote down vote up
@Override
protected void populateRemoteAddr() {
    if (closed) {
        return;
    }
    try {
        long socket = getSocket().longValue();
        long sa = Address.get(Socket.APR_REMOTE, socket);
        remoteAddr = Address.getip(sa);
    } catch (Exception e) {
        log.warn(sm.getString("endpoint.warn.noRemoteAddr", getSocket()), e);
    }
}
 
Example #7
Source File: AprEndpoint.java    From Tomcat8-Source-Read with MIT License 5 votes vote down vote up
@Override
protected void populateRemotePort() {
    if (closed) {
        return;
    }
    try {
        long socket = getSocket().longValue();
        long sa = Address.get(Socket.APR_REMOTE, socket);
        Sockaddr addr = Address.getInfo(sa);
        remotePort = addr.port;
    } catch (Exception e) {
        log.warn(sm.getString("endpoint.warn.noRemotePort", getSocket()), e);
    }
}
 
Example #8
Source File: AprEndpoint.java    From Tomcat8-Source-Read with MIT License 5 votes vote down vote up
@Override
protected void populateLocalName() {
    if (closed) {
        return;
    }
    try {
        long socket = getSocket().longValue();
        long sa = Address.get(Socket.APR_LOCAL, socket);
        localName =Address.getnameinfo(sa, 0);
    } catch (Exception e) {
        log.warn(sm.getString("endpoint.warn.noLocalName"), e);
    }
}
 
Example #9
Source File: AprEndpoint.java    From Tomcat8-Source-Read with MIT License 5 votes vote down vote up
@Override
protected void populateLocalAddr() {
    if (closed) {
        return;
    }
    try {
        long socket = getSocket().longValue();
        long sa = Address.get(Socket.APR_LOCAL, socket);
        localAddr = Address.getip(sa);
    } catch (Exception e) {
        log.warn(sm.getString("endpoint.warn.noLocalAddr"), e);
    }
}
 
Example #10
Source File: AprEndpoint.java    From Tomcat8-Source-Read with MIT License 5 votes vote down vote up
@Override
protected void populateLocalPort() {
    if (closed) {
        return;
    }
    try {
        long socket = getSocket().longValue();
        long sa = Address.get(Socket.APR_LOCAL, socket);
        Sockaddr addr = Address.getInfo(sa);
        localPort = addr.port;
    } catch (Exception e) {
        log.warn(sm.getString("endpoint.warn.noLocalPort"), e);
    }
}
 
Example #11
Source File: TestXxxEndpoint.java    From Tomcat8-Source-Read with MIT License 4 votes vote down vote up
private long createAprSocket(int port, long pool)
             throws Exception {
    /**
     * Server socket "pointer".
     */
    long serverSock = 0;

    String address = InetAddress.getByName("localhost").getHostAddress();

    // Create the APR address that will be bound
    int family = Socket.APR_INET;
    if (Library.APR_HAVE_IPV6) {
        if (!OS.IS_BSD && !OS.IS_WIN32 && !OS.IS_WIN64)
            family = Socket.APR_UNSPEC;
     }

    long inetAddress = 0;
    try {
        inetAddress = Address.info(address, family,
                                   port, 0, pool);
        // Create the APR server socket
        serverSock = Socket.create(Address.getInfo(inetAddress).family,
                                   Socket.SOCK_STREAM,
                                   Socket.APR_PROTO_TCP, pool);
    } catch (Exception ex) {
        log.error("Could not create socket for address '" + address + "'");
        return 0;
    }

    if (OS.IS_UNIX) {
        Socket.optSet(serverSock, Socket.APR_SO_REUSEADDR, 1);
    }
    // Deal with the firewalls that tend to drop the inactive sockets
    Socket.optSet(serverSock, Socket.APR_SO_KEEPALIVE, 1);
    // Bind the server socket
    int ret = Socket.bind(serverSock, inetAddress);
    if (ret != 0) {
        log.error("Could not bind: " + Error.strerror(ret));
        throw (new Exception(Error.strerror(ret)));
    }
    return serverSock;
}
 
Example #12
Source File: TestXxxEndpoint.java    From Tomcat7.0.67 with Apache License 2.0 4 votes vote down vote up
private long createAprSocket(int port, long pool)
             throws Exception {
    /**
     * Server socket "pointer".
     */
    long serverSock = 0;

    String address = InetAddress.getByName("localhost").getHostAddress();

    // Create the APR address that will be bound
    int family = Socket.APR_INET;
    if (Library.APR_HAVE_IPV6) {
        if (!OS.IS_BSD && !OS.IS_WIN32 && !OS.IS_WIN64)
            family = Socket.APR_UNSPEC;
     }

    long inetAddress = 0;
    try {
        inetAddress = Address.info(address, family,
                                   port, 0, pool);
        // Create the APR server socket
        serverSock = Socket.create(Address.getInfo(inetAddress).family,
                                   Socket.SOCK_STREAM,
                                   Socket.APR_PROTO_TCP, pool);
    } catch (Exception ex) {
        log.error("Could not create socket for address '" + address + "'");
        return 0;
    }

    if (OS.IS_UNIX) {
        Socket.optSet(serverSock, Socket.APR_SO_REUSEADDR, 1);
    }
    // Deal with the firewalls that tend to drop the inactive sockets
    Socket.optSet(serverSock, Socket.APR_SO_KEEPALIVE, 1);
    // Bind the server socket
    int ret = Socket.bind(serverSock, inetAddress);
    if (ret != 0) {
        log.error("Could not bind: " + Error.strerror(ret));
        throw (new Exception(Error.strerror(ret)));
    }
    return serverSock;
}
 
Example #13
Source File: TestXxxEndpoint.java    From tomcatsrc with Apache License 2.0 4 votes vote down vote up
private long createAprSocket(int port, long pool)
             throws Exception {
    /**
     * Server socket "pointer".
     */
    long serverSock = 0;

    String address = InetAddress.getByName("localhost").getHostAddress();

    // Create the APR address that will be bound
    int family = Socket.APR_INET;
    if (Library.APR_HAVE_IPV6) {
        if (!OS.IS_BSD && !OS.IS_WIN32 && !OS.IS_WIN64)
            family = Socket.APR_UNSPEC;
     }

    long inetAddress = 0;
    try {
        inetAddress = Address.info(address, family,
                                   port, 0, pool);
        // Create the APR server socket
        serverSock = Socket.create(Address.getInfo(inetAddress).family,
                                   Socket.SOCK_STREAM,
                                   Socket.APR_PROTO_TCP, pool);
    } catch (Exception ex) {
        log.error("Could not create socket for address '" + address + "'");
        return 0;
    }

    if (OS.IS_UNIX) {
        Socket.optSet(serverSock, Socket.APR_SO_REUSEADDR, 1);
    }
    // Deal with the firewalls that tend to drop the inactive sockets
    Socket.optSet(serverSock, Socket.APR_SO_KEEPALIVE, 1);
    // Bind the server socket
    int ret = Socket.bind(serverSock, inetAddress);
    if (ret != 0) {
        log.error("Could not bind: " + Error.strerror(ret));
        throw (new Exception(Error.strerror(ret)));
    }
    return serverSock;
}