hgomez      2004/07/27 06:46:32

  Modified:    ajp/ajplib/test ajp_link.c
  Log:
  *** keyword substitution change ***
  
  Revision  Changes    Path
  1.2       +267 -267  jakarta-tomcat-connectors/ajp/ajplib/test/ajp_link.c
  
  Index: ajp_link.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/ajp/ajplib/test/ajp_link.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ajp_link.c        27 Jul 2004 13:46:16 -0000      1.1
  +++ ajp_link.c        27 Jul 2004 13:46:32 -0000      1.2
  @@ -1,267 +1,267 @@
  -/* Copyright 1999-2004 The Apache Software Foundation

  - *

  - * Licensed under the Apache License, Version 2.0 (the "License");

  - * you may not use this file except in compliance with the License.

  - * You may obtain a copy of the License at

  - *

  - *     http://www.apache.org/licenses/LICENSE-2.0

  - *

  - * Unless required by applicable law or agreed to in writing, software

  - * distributed under the License is distributed on an "AS IS" BASIS,

  - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

  - * See the License for the specific language governing permissions and

  - * limitations under the License.

  - */

  -

  -#include "ajp.h"

  -

  -/**

  -   Resolve host

  -**/

  -int ajp_idef_resolve(ajp_env_t *env, char *host, apr_port_t port, ajp_idef_t * idef)

  -{

  -    int err;

  -

  -    err = apr_sockaddr_info_get(&idef->addr, host, APR_UNSPEC, port, 0, env->pool);

  -

  -    if (err != APR_SUCCESS) {

  -        return err;

  -    }

  -    return 0;

  -}

  -

  -

  -/**

  -   Create (connect) instance link

  -**/

  -

  -int ajp_ilink_connect(ajp_env_t *env, ajp_idef_t * idef, ajp_ilink_t *link)

  -{

  -    apr_sockaddr_t *remote_sa = idef->addr;

  -    int ndelay = idef->ndelay;

  -    int keepalive = idef->keepalive;

  -

  -    apr_socket_t *sock;

  -    apr_status_t ret;

  -    apr_int32_t timeout = (apr_int32_t) (idef->timeout * APR_USEC_PER_SEC);

  -    char msg[128];

  -    int connected = 0;

  -

  -    while (remote_sa && !connected) {

  -        if ((ret = apr_socket_create(&sock, remote_sa->family, SOCK_STREAM,

  -#if (APR_MAJOR_VERSION > 0)

  -                                     APR_PROTO_TCP,

  -#endif

  -                                     env->pool)) != APR_SUCCESS) {

  -            if (remote_sa->next) {

  -                fprintf(stderr, 

  -                        "ajp_ilink_connect() error %d creating socket to %s\n",

  -                        ret, idef->host);

  -            }

  -            else {

  -                fprintf(stderr, 

  -                        "ajp_ilink_connect() error %d creating socket to %s, no 
more addr\n",

  -                        ret, idef->host);

  -            }

  -            remote_sa = remote_sa->next;

  -            continue;

  -        }

  -        /* store the socket information */

  -        link->sock = sock;

  -        /* no requests yet */

  -        link->requests = 0;

  -

  -        fprintf(stdout, "ajp_ilink_connect() create tcp socket %d\n", sock);

  -

  -        /* the default timeout (0) will set the socket to blocking with

  -           infinite timeouts.

  -         */

  -

  -        if (timeout <= 0)

  -            apr_socket_timeout_set(sock, -1);

  -        else

  -            apr_socket_timeout_set(sock, timeout);

  -

  -        /* make the connection out of the socket */

  -        do {

  -            ret = apr_socket_connect(sock, remote_sa);

  -        } while (APR_STATUS_IS_EINTR(ret));

  -

  -        /* if an error occurred, loop round and try again */

  -        if (ret != APR_SUCCESS) {

  -            apr_socket_close(sock);

  -            if (remote_sa->next) {

  -                fprintf(stderr, 

  -                        "ajp_ilink_connect() attempt to connect to %pI (%s) failed 
%d\n",

  -                        remote_sa, idef->host, ret);

  -            }

  -            else {

  -                fprintf(stderr, 

  -                        "ajp_ilink_connect() attempt to connect to %pI (%s) failed 
%d, no more addr\n",

  -                        remote_sa, idef->host, ret);

  -            }

  -            remote_sa = remote_sa->next;

  -            continue;

  -        }

  -        connected = 1;

  -    }

  -

  -    if (!connected) {

  -        apr_socket_close(sock);

  -        return -1;

  -    }

  -    /* enable the use of keep-alive packets on TCP connection */

  -    if (keepalive) {

  -        int set = 1;

  -        if ((ret =

  -             apr_socket_opt_set(sock, APR_SO_KEEPALIVE, set)) != APR_SUCCESS) {

  -            apr_socket_close(sock);

  -             fprintf(stderr, "ajp_ilink_connect() keepalive failed %d %s\n",

  -                          ret, apr_strerror(ret, msg, sizeof(msg)));

  -            return -1;

  -        }

  -    }

  -

  -    /* Disable the Nagle algorithm if ndelay is set */

  -    if (ndelay) {

  -        int set = 1;

  -        if ((ret =

  -             apr_socket_opt_set(sock, APR_TCP_NODELAY, set)) != APR_SUCCESS) {

  -            apr_socket_close(sock);

  -             fprintf(stderr, "ajp_ilink_connect() nodelay failed %d %s\n",

  -                          ret, apr_strerror(ret, msg, sizeof(msg)));

  -            return -1;

  -        }

  -    }

  -

  -     fprintf(stdout, "ajp_ilink_connect(), sock = %d\n", sock);

  -

  -    return 0;

  -}

  -

  -

  -/**

  -   Close instance link

  -**/

  -

  -int ajp_ilink_close(ajp_env_t *env, ajp_ilink_t *link)

  -{

  -    apr_socket_t *sd;

  -    apr_status_t rc;

  -

  -    sd = link->sock;

  -    

  -    if (sd == NULL)

  -        return -1;

  -

  -     fprintf(stdout, 

  -             "ajp_ilink_close() closing sock = %d after %d requests\n", 

  -             sd, link->requests);

  -

  -    rc = apr_socket_close(sd);

  -    return rc;

  -}

  -

  -

  -int ajp_ilink_send(ajp_env_t *env, ajp_ilink_t *link, ajp_msg_t *msg)

  -{

  -    char *b;

  -    int len;

  -    apr_socket_t *sock;

  -    apr_status_t stat;

  -    apr_size_t length;

  -    char data[128];

  -

  -    sock = link->sock;

  -

  -    if (sock == NULL)

  -        return -1;

  -

  -    ajp_msg_end(env, msg);

  -    

  -    len = msg->len;

  -    b = msg->buf;

  -

  -    length = (apr_size_t) len;

  -    do {

  -        apr_size_t written = length;

  -

  -        stat = apr_socket_send(sock, b, &written);

  -        if (stat != APR_SUCCESS) {

  -            fprintf(stderr,

  -                    "ajp_ilink_send() send failed %d %s\n",

  -                    stat, apr_strerror(stat, data, sizeof(data)));

  -            return -3;          /* -2 is not possible... */

  -        }

  -        length -= written;

  -        b += written;

  -    } while (length);

  -

  -    return 0;

  -}

  -

  -

  -static int ajp_ilink_readN(ajp_env_t *env, ajp_ilink_t *link, char * buf, 
apr_size_t len)

  -{

  -    apr_socket_t *sock;

  -    apr_size_t length;

  -    apr_status_t stat;

  -    int rdlen;

  -

  -    sock = link->sock;

  -

  -    if (sock == NULL)

  -        return -1;

  -

  -    rdlen = 0;

  -    length = len;

  -    while (rdlen < len) {

  -

  -        stat = apr_socket_recv(sock, buf + rdlen, &length);

  -

  -        if (stat == APR_EOF)

  -            return -1;          /* socket closed. */

  -        else if (APR_STATUS_IS_EAGAIN(stat))

  -            continue;

  -        else if (stat != APR_SUCCESS)

  -            return -1;          /* any error. */

  -        rdlen += length;

  -        length = (apr_size_t) (len - rdlen);

  -    }

  -    return rdlen;

  -}

  -

  -

  -int ajp_ilink_receive(ajp_env_t *env, ajp_ilink_t *link, ajp_msg_t *msg)

  -{

  -    int hlen = msg->headerLen;

  -    int blen;

  -    int rc;

  -

  -

  -    ajp_ilink_channel_apr_readN(env, link, msg->buf, hlen);

  -

  -    blen = ajp_msg_check_header(env, msg);

  -

  -    if (blen < 0) {

  -        fprintf(stderr,

  -                "ajp_ilink_receive() received bad header\n");

  -        return -1;

  -    }

  -

  -    rc = jk2_channel_apr_readN(env, link, msg->buf + hlen, blen);

  -

  -    if (rc < 0) {

  -        fprintf(stderr,

  -                "ajp_ilink_receive() error while receiving message body %d %d\n",

  -                rc, errno);

  -        return -2;

  -    }

  -

  -        fprintf(stdout,

  -                "ajp_ilink_receive() received packet len=%d type=%d\n",

  -                blen, (int)msg->buf[hlen]);

  -    return 0;

  -

  -}

  -

  +/* Copyright 1999-2004 The Apache Software Foundation
  + *
  + * Licensed under the Apache License, Version 2.0 (the "License");
  + * you may not use this file except in compliance with the License.
  + * You may obtain a copy of the License at
  + *
  + *     http://www.apache.org/licenses/LICENSE-2.0
  + *
  + * Unless required by applicable law or agreed to in writing, software
  + * distributed under the License is distributed on an "AS IS" BASIS,
  + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  + * See the License for the specific language governing permissions and
  + * limitations under the License.
  + */
  +
  +#include "ajp.h"
  +
  +/**
  +   Resolve host
  +**/
  +int ajp_idef_resolve(ajp_env_t *env, char *host, apr_port_t port, ajp_idef_t * idef)
  +{
  +    int err;
  +
  +    err = apr_sockaddr_info_get(&idef->addr, host, APR_UNSPEC, port, 0, env->pool);
  +
  +    if (err != APR_SUCCESS) {
  +        return err;
  +    }
  +    return 0;
  +}
  +
  +
  +/**
  +   Create (connect) instance link
  +**/
  +
  +int ajp_ilink_connect(ajp_env_t *env, ajp_idef_t * idef, ajp_ilink_t *link)
  +{
  +    apr_sockaddr_t *remote_sa = idef->addr;
  +    int ndelay = idef->ndelay;
  +    int keepalive = idef->keepalive;
  +
  +    apr_socket_t *sock;
  +    apr_status_t ret;
  +    apr_int32_t timeout = (apr_int32_t) (idef->timeout * APR_USEC_PER_SEC);
  +    char msg[128];
  +    int connected = 0;
  +
  +    while (remote_sa && !connected) {
  +        if ((ret = apr_socket_create(&sock, remote_sa->family, SOCK_STREAM,
  +#if (APR_MAJOR_VERSION > 0)
  +                                     APR_PROTO_TCP,
  +#endif
  +                                     env->pool)) != APR_SUCCESS) {
  +            if (remote_sa->next) {
  +                fprintf(stderr, 
  +                        "ajp_ilink_connect() error %d creating socket to %s\n",
  +                        ret, idef->host);
  +            }
  +            else {
  +                fprintf(stderr, 
  +                        "ajp_ilink_connect() error %d creating socket to %s, no 
more addr\n",
  +                        ret, idef->host);
  +            }
  +            remote_sa = remote_sa->next;
  +            continue;
  +        }
  +        /* store the socket information */
  +        link->sock = sock;
  +        /* no requests yet */
  +        link->requests = 0;
  +
  +        fprintf(stdout, "ajp_ilink_connect() create tcp socket %d\n", sock);
  +
  +        /* the default timeout (0) will set the socket to blocking with
  +           infinite timeouts.
  +         */
  +
  +        if (timeout <= 0)
  +            apr_socket_timeout_set(sock, -1);
  +        else
  +            apr_socket_timeout_set(sock, timeout);
  +
  +        /* make the connection out of the socket */
  +        do {
  +            ret = apr_socket_connect(sock, remote_sa);
  +        } while (APR_STATUS_IS_EINTR(ret));
  +
  +        /* if an error occurred, loop round and try again */
  +        if (ret != APR_SUCCESS) {
  +            apr_socket_close(sock);
  +            if (remote_sa->next) {
  +                fprintf(stderr, 
  +                        "ajp_ilink_connect() attempt to connect to %pI (%s) failed 
%d\n",
  +                        remote_sa, idef->host, ret);
  +            }
  +            else {
  +                fprintf(stderr, 
  +                        "ajp_ilink_connect() attempt to connect to %pI (%s) failed 
%d, no more addr\n",
  +                        remote_sa, idef->host, ret);
  +            }
  +            remote_sa = remote_sa->next;
  +            continue;
  +        }
  +        connected = 1;
  +    }
  +
  +    if (!connected) {
  +        apr_socket_close(sock);
  +        return -1;
  +    }
  +    /* enable the use of keep-alive packets on TCP connection */
  +    if (keepalive) {
  +        int set = 1;
  +        if ((ret =
  +             apr_socket_opt_set(sock, APR_SO_KEEPALIVE, set)) != APR_SUCCESS) {
  +            apr_socket_close(sock);
  +             fprintf(stderr, "ajp_ilink_connect() keepalive failed %d %s\n",
  +                          ret, apr_strerror(ret, msg, sizeof(msg)));
  +            return -1;
  +        }
  +    }
  +
  +    /* Disable the Nagle algorithm if ndelay is set */
  +    if (ndelay) {
  +        int set = 1;
  +        if ((ret =
  +             apr_socket_opt_set(sock, APR_TCP_NODELAY, set)) != APR_SUCCESS) {
  +            apr_socket_close(sock);
  +             fprintf(stderr, "ajp_ilink_connect() nodelay failed %d %s\n",
  +                          ret, apr_strerror(ret, msg, sizeof(msg)));
  +            return -1;
  +        }
  +    }
  +
  +     fprintf(stdout, "ajp_ilink_connect(), sock = %d\n", sock);
  +
  +    return 0;
  +}
  +
  +
  +/**
  +   Close instance link
  +**/
  +
  +int ajp_ilink_close(ajp_env_t *env, ajp_ilink_t *link)
  +{
  +    apr_socket_t *sd;
  +    apr_status_t rc;
  +
  +    sd = link->sock;
  +    
  +    if (sd == NULL)
  +        return -1;
  +
  +     fprintf(stdout, 
  +             "ajp_ilink_close() closing sock = %d after %d requests\n", 
  +             sd, link->requests);
  +
  +    rc = apr_socket_close(sd);
  +    return rc;
  +}
  +
  +
  +int ajp_ilink_send(ajp_env_t *env, ajp_ilink_t *link, ajp_msg_t *msg)
  +{
  +    char *b;
  +    int len;
  +    apr_socket_t *sock;
  +    apr_status_t stat;
  +    apr_size_t length;
  +    char data[128];
  +
  +    sock = link->sock;
  +
  +    if (sock == NULL)
  +        return -1;
  +
  +    ajp_msg_end(env, msg);
  +    
  +    len = msg->len;
  +    b = msg->buf;
  +
  +    length = (apr_size_t) len;
  +    do {
  +        apr_size_t written = length;
  +
  +        stat = apr_socket_send(sock, b, &written);
  +        if (stat != APR_SUCCESS) {
  +            fprintf(stderr,
  +                    "ajp_ilink_send() send failed %d %s\n",
  +                    stat, apr_strerror(stat, data, sizeof(data)));
  +            return -3;          /* -2 is not possible... */
  +        }
  +        length -= written;
  +        b += written;
  +    } while (length);
  +
  +    return 0;
  +}
  +
  +
  +static int ajp_ilink_readN(ajp_env_t *env, ajp_ilink_t *link, char * buf, 
apr_size_t len)
  +{
  +    apr_socket_t *sock;
  +    apr_size_t length;
  +    apr_status_t stat;
  +    int rdlen;
  +
  +    sock = link->sock;
  +
  +    if (sock == NULL)
  +        return -1;
  +
  +    rdlen = 0;
  +    length = len;
  +    while (rdlen < len) {
  +
  +        stat = apr_socket_recv(sock, buf + rdlen, &length);
  +
  +        if (stat == APR_EOF)
  +            return -1;          /* socket closed. */
  +        else if (APR_STATUS_IS_EAGAIN(stat))
  +            continue;
  +        else if (stat != APR_SUCCESS)
  +            return -1;          /* any error. */
  +        rdlen += length;
  +        length = (apr_size_t) (len - rdlen);
  +    }
  +    return rdlen;
  +}
  +
  +
  +int ajp_ilink_receive(ajp_env_t *env, ajp_ilink_t *link, ajp_msg_t *msg)
  +{
  +    int hlen = msg->headerLen;
  +    int blen;
  +    int rc;
  +
  +
  +    ajp_ilink_channel_apr_readN(env, link, msg->buf, hlen);
  +
  +    blen = ajp_msg_check_header(env, msg);
  +
  +    if (blen < 0) {
  +        fprintf(stderr,
  +                "ajp_ilink_receive() received bad header\n");
  +        return -1;
  +    }
  +
  +    rc = jk2_channel_apr_readN(env, link, msg->buf + hlen, blen);
  +
  +    if (rc < 0) {
  +        fprintf(stderr,
  +                "ajp_ilink_receive() error while receiving message body %d %d\n",
  +                rc, errno);
  +        return -2;
  +    }
  +
  +        fprintf(stdout,
  +                "ajp_ilink_receive() received packet len=%d type=%d\n",
  +                blen, (int)msg->buf[hlen]);
  +    return 0;
  +
  +}
  +
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to