summaryrefslogtreecommitdiffstats
path: root/rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_msg_buff.c
diff options
context:
space:
mode:
Diffstat (limited to 'rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_msg_buff.c')
-rw-r--r--rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_msg_buff.c382
1 files changed, 0 insertions, 382 deletions
diff --git a/rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_msg_buff.c b/rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_msg_buff.c
deleted file mode 100644
index 955fd5ab..00000000
--- a/rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_msg_buff.c
+++ /dev/null
@@ -1,382 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-
-/***************************************************************************
- * Description: Data marshaling. XDR like *
- * Author: Costin <costin@costin.dnt.ro> *
- * Author: Gal Shachor <shachor@il.ibm.com> *
- * Author: Henri Gomez <hgomez@apache.org> *
- * Version: $Revision: 705882 $ *
- ***************************************************************************/
-
-#include "jk_pool.h"
-#include "jk_connect.h"
-#include "jk_util.h"
-#include "jk_sockbuf.h"
-#include "jk_msg_buff.h"
-#include "jk_logger.h"
-
-static char *jk_HEX = "0123456789ABCDEFX";
-
-/*
- * Simple marshaling code.
- */
-
-void jk_b_reset(jk_msg_buf_t *msg)
-{
- msg->len = 4;
- msg->pos = 4;
- if (msg->buf && msg->maxlen) {
- /* Clear the message buffer */
- memset(msg->buf, 0, msg->maxlen);
- }
-}
-
-int jk_b_append_long(jk_msg_buf_t *msg, unsigned long val)
-{
- if (msg->len + 4 > msg->maxlen) {
- return -1;
- }
-
- msg->buf[msg->len++] = (unsigned char)((val >> 24) & 0xFF);
- msg->buf[msg->len++] = (unsigned char)((val >> 16) & 0xFF);
- msg->buf[msg->len++] = (unsigned char)((val >> 8) & 0xFF);
- msg->buf[msg->len++] = (unsigned char)((val) & 0xFF);
-
- return 0;
-}
-
-
-int jk_b_append_int(jk_msg_buf_t *msg, unsigned short val)
-{
- if (msg->len + 2 > msg->maxlen) {
- return -1;
- }
-
- msg->buf[msg->len++] = (unsigned char)((val >> 8) & 0xFF);
- msg->buf[msg->len++] = (unsigned char)((val) & 0xFF);
-
- return 0;
-}
-
-
-int jk_b_append_byte(jk_msg_buf_t *msg, unsigned char val)
-{
- if (msg->len + 1 > msg->maxlen) {
- return -1;
- }
-
- msg->buf[msg->len++] = val;
-
- return 0;
-}
-
-
-void jk_b_end(jk_msg_buf_t *msg, int protoh)
-{
- /*
- * Ugly way to set the size in the right position
- */
- int hlen = msg->len - 4;
-
- msg->buf[0] = (unsigned char)((protoh >> 8) & 0xFF);
- msg->buf[1] = (unsigned char)((protoh) & 0xFF);
- msg->buf[2] = (unsigned char)((hlen >> 8) & 0xFF);
- msg->buf[3] = (unsigned char)((hlen) & 0xFF);
-
-}
-
-
-jk_msg_buf_t *jk_b_new(jk_pool_t *p)
-{
- jk_msg_buf_t *msg =
- (jk_msg_buf_t *)jk_pool_alloc(p, sizeof(jk_msg_buf_t));
-
- if (!msg) {
- return NULL;
- }
- memset(msg, 0, sizeof(jk_msg_buf_t));
- msg->pool = p;
-
- return msg;
-}
-
-int jk_b_set_buffer(jk_msg_buf_t *msg, unsigned char *data, int buffSize)
-{
- if (!msg) {
- return -1;
- }
-
- msg->len = 0;
- msg->buf = data;
- msg->maxlen = buffSize;
-
- return 0;
-}
-
-
-int jk_b_set_buffer_size(jk_msg_buf_t *msg, int buffSize)
-{
- unsigned char *data = (unsigned char *)jk_pool_alloc(msg->pool, buffSize);
-
- if (!data) {
- return -1;
- }
-
- jk_b_set_buffer(msg, data, buffSize);
- return 0;
-}
-
-#if defined(AS400) && !defined(AS400_UTF8)
-int jk_b_append_asciistring(jk_msg_buf_t *msg, const char *param)
-{
- int len;
-
- if (!param) {
- jk_b_append_int(msg, 0xFFFF);
- return 0;
- }
-
- len = strlen(param);
- if (msg->len + len + 2 > msg->maxlen) {
- return -1;
- }
-
- /* ignore error - we checked once */
- jk_b_append_int(msg, (unsigned short)len);
-
- /* We checked for space !! */
- strncpy((char *)msg->buf + msg->len, param, len + 1); /* including \0 */
- msg->len += len + 1;
-
- return 0;
-}
-#endif
-
-int jk_b_append_string(jk_msg_buf_t *msg, const char *param)
-{
- unsigned short len;
-
- if (!param) {
- jk_b_append_int(msg, 0xFFFF);
- return 0;
- }
-
- len = (unsigned short)strlen(param);
- if (msg->len + len + 3 > msg->maxlen) {
- return -1;
- }
-
- /* ignore error - we checked once */
- jk_b_append_int(msg, len);
-
- /* We checked for space !! */
- memcpy(msg->buf + msg->len, param, len + 1); /* including \0 */
-#if (defined(AS400) && !defined(AS400_UTF8)) || defined(_OSD_POSIX)
- /* convert from EBCDIC if needed */
- jk_xlate_to_ascii((char *)msg->buf + msg->len, len + 1);
-#endif
- msg->len += len + 1;
-
- return 0;
-}
-
-
-int jk_b_append_bytes(jk_msg_buf_t *msg, const unsigned char *param, int len)
-{
- if (!len) {
- return 0;
- }
-
- if (msg->len + len > msg->maxlen) {
- return -1;
- }
-
- /* We checked for space !! */
- memcpy((char *)msg->buf + msg->len, param, len);
- msg->len += len;
-
- return 0;
-}
-
-unsigned long jk_b_get_long(jk_msg_buf_t *msg)
-{
- unsigned long i;
- if (msg->pos + 3 > msg->len) {
- return 0xFFFFFFFF;
- }
- i = ((msg->buf[(msg->pos++)] & 0xFF) << 24);
- i |= ((msg->buf[(msg->pos++)] & 0xFF) << 16);
- i |= ((msg->buf[(msg->pos++)] & 0xFF) << 8);
- i |= ((msg->buf[(msg->pos++)] & 0xFF));
- return i;
-}
-
-unsigned long jk_b_pget_long(jk_msg_buf_t *msg, int pos)
-{
- unsigned long i;
- i = ((msg->buf[(pos++)] & 0xFF) << 24);
- i |= ((msg->buf[(pos++)] & 0xFF) << 16);
- i |= ((msg->buf[(pos++)] & 0xFF) << 8);
- i |= ((msg->buf[(pos)] & 0xFF));
- return i;
-}
-
-
-unsigned short jk_b_get_int(jk_msg_buf_t *msg)
-{
- unsigned short i;
- if (msg->pos + 1 > msg->len) {
- return 0xFFFF;
- }
- i = ((msg->buf[(msg->pos++)] & 0xFF) << 8);
- i += ((msg->buf[(msg->pos++)] & 0xFF));
- return i;
-}
-
-unsigned short jk_b_pget_int(jk_msg_buf_t *msg, int pos)
-{
- unsigned short i;
- i = ((msg->buf[pos++] & 0xFF) << 8);
- i += ((msg->buf[pos] & 0xFF));
- return i;
-}
-
-unsigned char jk_b_get_byte(jk_msg_buf_t *msg)
-{
- unsigned char rc;
- if (msg->pos > msg->len) {
- return 0xFF;
- }
- rc = msg->buf[msg->pos++];
-
- return rc;
-}
-
-unsigned char jk_b_pget_byte(jk_msg_buf_t *msg, int pos)
-{
- return msg->buf[pos];
-}
-
-
-unsigned char *jk_b_get_string(jk_msg_buf_t *msg)
-{
- unsigned short size = jk_b_get_int(msg);
- int start = msg->pos;
-
- if ((size == 0xFFFF) || (size + start > msg->maxlen)) {
- /* Error of overflow in AJP packet.
- * The complete message is probably invalid.
- */
- return NULL;
- }
-
- msg->pos += size;
- msg->pos++; /* terminating NULL */
-
- return (unsigned char *)(msg->buf + start);
-}
-
-int jk_b_get_bytes(jk_msg_buf_t *msg, unsigned char *buf, int len)
-{
- int start = msg->pos;
-
- if ((len < 0) || (len + start > msg->maxlen)) {
- return (-1);
- }
-
- memcpy(buf, msg->buf + start, len);
- msg->pos += len;
- return (len);
-}
-
-
-
-/** Helpie dump function
- */
-void jk_dump_buff(jk_logger_t *l,
- const char *file,
- int line, const char *funcname,
- int level, char *what, jk_msg_buf_t *msg)
-{
- int i = 0;
- char lb[80];
- char *current;
- int j;
- int len = msg->len;
-
- if (l == NULL)
- return;
- if (l->level != JK_LOG_TRACE_LEVEL && len > 1024)
- len = 1024;
-
- jk_log(l, file, line, funcname, level,
- "%s pos=%d len=%d max=%d",
- what, msg->pos, msg->len, msg->maxlen);
-
- for (i = 0; i < len; i += 16) {
- current = &lb[0];
-
- for (j = 0; j < 16; j++) {
- unsigned char x = (msg->buf[i + j]);
- if ((i + j) >= len)
- x = 0;
- *current++ = jk_HEX[x >> 4];
- *current++ = jk_HEX[x & 0x0f];
- *current++ = ' ';
- }
- *current++ = ' ';
- *current++ = '-';
- *current++ = ' ';
- for (j = 0; j < 16; j++) {
- unsigned char x = msg->buf[i + j];
- if ((i + j) >= len)
- x = 0;
- if (x > 0x20 && x < 0x7F) {
-#ifdef USE_CHARSET_EBCDIC
- *current = x;
- jk_xlate_from_ascii(current, 1);
- current++;
-#else
- *current++ = x;
-#endif
- }
- else {
- *current++ = '.';
- }
- }
- *current++ = '\0';
-
- jk_log(l, file, line, funcname, level,
- "%.4x %s", i, lb);
- }
-}
-
-
-int jk_b_copy(jk_msg_buf_t *smsg, jk_msg_buf_t *dmsg)
-{
- if (smsg == NULL || dmsg == NULL)
- return (-1);
-
- if (dmsg->maxlen < smsg->len)
- return (-2);
-
- memcpy(dmsg->buf, smsg->buf, smsg->len);
- dmsg->len = smsg->len;
-
- return (smsg->len);
-}