While porting to IBM i (aka OS/400), found the following problem which I 
want to verify with developers since I really do not understand how this 
works...

In file src\core\transport\tcp\receiver\simple_tcp_svr_conn.c, there is 
the routine at the bottom. 

My compile fails due to the line 

if(str_line > 0)

which I do not understand.  Can anyone explain?  The other thing I 
question about this routine is the returning of a buffer that basically 
declared in automatic storage.   See statement:

svr_conn->buffer = str_line;

====================

AXIS2_EXTERN axis2_char_t *AXIS2_CALL
axis2_simple_tcp_svr_conn_read_request(
    axis2_simple_tcp_svr_conn_t * svr_conn,
    const axutil_env_t * env)
{
    int size = 32000;
    axis2_char_t str_line[32000];
    axis2_char_t tmp_buf[32000];
    int read = -1;

    AXIS2_ENV_CHECK(env, NULL);

    memset(str_line, 0, size);
    while((read = axutil_stream_peek_socket(svr_conn->stream, env, 
tmp_buf, size - 1)) > 0)
    {
        tmp_buf[read] = '\0';
        if(read > 0)
        {
            read = axutil_stream_read(svr_conn->stream, env, tmp_buf, size 
- 1);
            if(read > 0)
            {
                tmp_buf[read] = '\0';
                strcat(str_line, tmp_buf);
                break;
            }
            else
            {
                break;
            }
        }
    }
    if(str_line > 0)
    {
        svr_conn->buffer = str_line;
    }
    return svr_conn->buffer;
}




Nadir Amra
Integrated Web Services for IBM i Operating System
Internet: [email protected]

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to