ajp_msg.c revision 6121ba973fff0ef0b2d9ff6ef2a50188ab2dce34
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg/* Licensed to the Apache Software Foundation (ASF) under one or more
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * contributor license agreements. See the NOTICE file distributed with
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * this work for additional information regarding copyright ownership.
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * The ASF licenses this file to You under the Apache License, Version 2.0
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * (the "License"); you may not use this file except in compliance with
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * the License. You may obtain a copy of the License at
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * Unless required by applicable law or agreed to in writing, software
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * distributed under the License is distributed on an "AS IS" BASIS,
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * See the License for the specific language governing permissions and
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * limitations under the License.
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * Dump up to the first 1024 bytes on an AJP Message
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @param pool pool to allocate from
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @param msg AJP Message to dump
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @param err error string to display
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @return dump message
44f575c8cb19a7a5cd61664a7848be6bc197df02fuankgchar * ajp_msg_dump(apr_pool_t *pool, ajp_msg_t *msg, char *err)
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg char *rv, *p;
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg /* Display only first 1024 bytes */
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg for (j = 0; j < 16; j++) {
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg for (j = 0; j < 16; j++) {
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg "ajp_msg_dump(): %.4lx %s\n",
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg (unsigned long)i, line);
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * Check a new AJP Message by looking at signature and return its size
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @param msg AJP Message to check
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @param len Pointer to returned len
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @return APR_SUCCESS or error
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankgapr_status_t ajp_msg_check_header(ajp_msg_t *msg, apr_size_t *len)
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg "ajp_check_msg_header() got bad signature %02x%02x",
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg "ajp_check_msg_header() incoming message is "
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * Reset an AJP Message
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @param msg AJP Message to reset
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @return APR_SUCCESS or error
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * Reuse an AJP Message
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @param msg AJP Message to reuse
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @return APR_SUCCESS or error
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * Mark the end of an AJP Message
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @param msg AJP Message to end
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @return APR_SUCCESS or error
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankgstatic APR_INLINE int ajp_log_overflow(ajp_msg_t *msg, const char *context)
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * Add an unsigned 32bits value to AJP Message
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @param msg AJP Message to get value from
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @param value value to add to AJP Message
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @return APR_SUCCESS or error
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankgapr_status_t ajp_msg_append_uint32(ajp_msg_t *msg, apr_uint32_t value)
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg return ajp_log_overflow(msg, "ajp_msg_append_uint32");
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg msg->buf[len + 1] = (apr_byte_t)((value >> 16) & 0xFF);
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg msg->buf[len + 2] = (apr_byte_t)((value >> 8) & 0xFF);
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * Add an unsigned 16bits value to AJP Message
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @param msg AJP Message to get value from
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @param value value to add to AJP Message
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @return APR_SUCCESS or error
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankgapr_status_t ajp_msg_append_uint16(ajp_msg_t *msg, apr_uint16_t value)
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg return ajp_log_overflow(msg, "ajp_msg_append_uint16");
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * Add an unsigned 8bits value to AJP Message
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @param msg AJP Message to get value from
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @param value value to add to AJP Message
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg * @return APR_SUCCESS or error
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankgapr_status_t ajp_msg_append_uint8(ajp_msg_t *msg, apr_byte_t value)
1850c8c89f2d775a2e905832b77b9bcc3bd46db4fuankg return ajp_log_overflow(msg, "ajp_msg_append_uint8");
return APR_SUCCESS;
int convert)
return APR_SUCCESS;
if (! valuelen) {
return APR_SUCCESS;
return APR_SUCCESS;
return APR_SUCCESS;
return APR_SUCCESS;
return APR_SUCCESS;
return APR_SUCCESS;
return APR_SUCCESS;
return APR_SUCCESS;
if (!msg) {
return APR_ENOPOOL;
return APR_ENOPOOL;
return APR_SUCCESS;
return AJP_EINVAL;
return AJP_ETOSMALL;
return APR_SUCCESS;
return rc;
return APR_SUCCESS;
return rc;
return APR_SUCCESS;