⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jk_ajp14.c

📁 jboss与apache集成的中间件,详情请参看文档说明.
💻 C
📖 第 1 页 / 共 2 页
字号:
        jk_log(l, JK_LOG_ERROR,               "failed appending the UNHANDLED MESSAGE");        JK_TRACE_EXIT(l);        return JK_FALSE;    }    JK_TRACE_EXIT(l);    return JK_TRUE;}/* * Build the Context Query Cmd (autoconf) * * +--------------------------+---------------------------------+ * | CONTEXT QRY CMD (1 byte) | VIRTUAL HOST NAME (CString (*)) | * +--------------------------+---------------------------------+ * */int ajp14_marshal_context_query_into_msgb(jk_msg_buf_t *msg,                                          char *virtual, jk_logger_t *l){    JK_TRACE_ENTER(l);    /* To be on the safe side */    jk_b_reset(msg);    /*     * CONTEXT QUERY CMD     */    if (jk_b_append_byte(msg, AJP14_CONTEXT_QRY_CMD)) {        JK_TRACE_EXIT(l);        return JK_FALSE;    }    /*     * VIRTUAL HOST CSTRING     */    if (jk_b_append_string(msg, virtual)) {        jk_log(l, JK_LOG_ERROR,               "failed appending the virtual host string");        JK_TRACE_EXIT(l);        return JK_FALSE;    }    JK_TRACE_EXIT(l);    return JK_TRUE;}/* * Decode the Context Info Cmd (Autoconf) * * The Autoconf feature of AJP14, let us know which URL/URI could * be handled by the servlet-engine * * +---------------------------+---------------------------------+----------------------------+-------------------------------+-----------+ * | CONTEXT INFO CMD (1 byte) | VIRTUAL HOST NAME (CString (*)) | CONTEXT NAME (CString (*)) | URL1 [\n] URL2 [\n] URL3 [\n] | NEXT CTX. | * +---------------------------+---------------------------------+----------------------------+-------------------------------+-----------+ */int ajp14_unmarshal_context_info(jk_msg_buf_t *msg,                                 jk_context_t *c, jk_logger_t *l){    char *vname;    char *cname;    char *uri;    vname = (char *)jk_b_get_string(msg);    JK_TRACE_ENTER(l);    jk_log(l, JK_LOG_DEBUG,           "get virtual %s for virtual %s",           vname, c->virt);    if (!vname) {        jk_log(l, JK_LOG_ERROR,               "can't get virtual hostname");        JK_TRACE_EXIT(l);        return JK_FALSE;    }    /* Check if we get the correct virtual host */    if (c->virt != NULL && vname != NULL && strcmp(c->virt, vname)) {        /* set the virtual name, better to add to a virtual list ? */        if (context_set_virtual(c, vname) == JK_FALSE) {            jk_log(l, JK_LOG_ERROR,                   "can't malloc virtual hostname");            JK_TRACE_EXIT(l);            return JK_FALSE;        }    }    for (;;) {        cname = (char *)jk_b_get_string(msg);        if (!cname) {            jk_log(l, JK_LOG_ERROR,                   "can't get context");            JK_TRACE_EXIT(l);            return JK_FALSE;        }        jk_log(l, JK_LOG_DEBUG,               "get context %s for virtual %s",               cname, vname);        /* grab all contexts up to empty one which indicate end of contexts */        if (!strlen(cname))            break;        /* create new context base (if needed) */        if (context_add_base(c, cname) == JK_FALSE) {            jk_log(l, JK_LOG_ERROR,                   "can't add/set context %s",                   cname);            JK_TRACE_EXIT(l);            return JK_FALSE;        }        for (;;) {            uri = (char *)jk_b_get_string(msg);            if (!uri) {                jk_log(l, JK_LOG_ERROR,                       "can't get URI");                JK_TRACE_EXIT(l);                return JK_FALSE;            }            if (!strlen(uri)) {                jk_log(l, JK_LOG_DEBUG, "No more URI for context %s", cname);                break;            }            jk_log(l, JK_LOG_INFO,                   "Got URI (%s) for virtualhost %s and context %s", uri,                   vname, cname);            if (context_add_uri(c, cname, uri) == JK_FALSE) {                jk_log(l, JK_LOG_ERROR,                       "can't add/set uri (%s) for context %s",                       uri, cname);                JK_TRACE_EXIT(l);                return JK_FALSE;            }        }    }    JK_TRACE_EXIT(l);    return JK_TRUE;}/* * Build the Context State Query Cmd * * We send the list of contexts where we want to know state, empty string end context list* * If cname is set, only ask about THIS context * * +----------------------------+----------------------------------+----------------------------+----+ * | CONTEXT STATE CMD (1 byte) |  VIRTUAL HOST NAME (CString (*)) | CONTEXT NAME (CString (*)) | .. | * +----------------------------+----------------------------------+----------------------------+----+ * */int ajp14_marshal_context_state_into_msgb(jk_msg_buf_t *msg,                                          jk_context_t *c,                                          char *cname, jk_logger_t *l){    jk_context_item_t *ci;    int i;    JK_TRACE_ENTER(l);    /* To be on the safe side */    jk_b_reset(msg);    /*     * CONTEXT STATE CMD     */    if (jk_b_append_byte(msg, AJP14_CONTEXT_STATE_CMD)) {        JK_TRACE_EXIT(l);        return JK_FALSE;    }    /*     * VIRTUAL HOST CSTRING     */    if (jk_b_append_string(msg, c->virt)) {        jk_log(l, JK_LOG_ERROR,               "failed appending the virtual host string");        JK_TRACE_EXIT(l);        return JK_FALSE;    }    if (cname) {        ci = context_find_base(c, cname);        if (!ci) {            jk_log(l, JK_LOG_ERROR,                   "unknown context %s",                   cname);            JK_TRACE_EXIT(l);            return JK_FALSE;        }        /*         * CONTEXT CSTRING         */        if (jk_b_append_string(msg, cname)) {            jk_log(l, JK_LOG_ERROR,                   "failed appending the context string %s",                   cname);            JK_TRACE_EXIT(l);            return JK_FALSE;        }    }    else {                      /* Grab all contexts name */        for (i = 0; i < c->size; i++) {            /*             * CONTEXT CSTRING             */            if (jk_b_append_string(msg, c->contexts[i]->cbase)) {                jk_log(l, JK_LOG_ERROR,                       "failed appending the context string %s",                       c->contexts[i]->cbase);                JK_TRACE_EXIT(l);                return JK_FALSE;            }        }    }    /* End of context list, an empty string */    if (jk_b_append_string(msg, "")) {        jk_log(l, JK_LOG_ERROR,               "failed appending end of contexts");        JK_TRACE_EXIT(l);        return JK_FALSE;    }    JK_TRACE_EXIT(l);    return JK_TRUE;}/* * Decode the Context State Reply Cmd * * We get update of contexts list, empty string end context list* * * +----------------------------------+---------------------------------+----------------------------+------------------+----+ * | CONTEXT STATE REPLY CMD (1 byte) | VIRTUAL HOST NAME (CString (*)) | CONTEXT NAME (CString (*)) | UP/DOWN (1 byte) | .. | * +----------------------------------+---------------------------------+----------------------------+------------------+----+ * */int ajp14_unmarshal_context_state_reply(jk_msg_buf_t *msg,                                        jk_context_t *c, jk_logger_t *l){    char *vname;    char *cname;    jk_context_item_t *ci;    JK_TRACE_ENTER(l);    /* get virtual name */    vname = (char *)jk_b_get_string(msg);    if (!vname) {        jk_log(l, JK_LOG_ERROR,               "can't get virtual hostname");        JK_TRACE_EXIT(l);        return JK_FALSE;    }    /* Check if we speak about the correct virtual */    if (strcmp(c->virt, vname)) {        jk_log(l, JK_LOG_ERROR,               "incorrect virtual %s instead of %s",               vname, c->virt);        JK_TRACE_EXIT(l);        return JK_FALSE;    }    for (;;) {        /* get context name */        cname = (char *)jk_b_get_string(msg);        if (!cname) {            jk_log(l, JK_LOG_ERROR,                   "can't get context");            JK_TRACE_EXIT(l);            return JK_FALSE;        }        if (!strlen(cname))            break;        ci = context_find_base(c, cname);        if (!ci) {            jk_log(l, JK_LOG_ERROR,                   "unknow context %s for virtual %s",                   cname, vname);            JK_TRACE_EXIT(l);            return JK_FALSE;        }        ci->status = jk_b_get_int(msg);        if (JK_IS_DEBUG_LEVEL(l))            jk_log(l, JK_LOG_DEBUG,                   "updated context %s to state %d",                   cname, ci->status);    }    JK_TRACE_EXIT(l);    return JK_TRUE;}/* * Decode the Context Update Cmd *  * +-----------------------------+---------------------------------+----------------------------+------------------+ * | CONTEXT UPDATE CMD (1 byte) | VIRTUAL HOST NAME (CString (*)) | CONTEXT NAME (CString (*)) | UP/DOWN (1 byte) | * +-----------------------------+---------------------------------+----------------------------+------------------+ *  */int ajp14_unmarshal_context_update_cmd(jk_msg_buf_t *msg,                                       jk_context_t *c, jk_logger_t *l){    int rc;    JK_TRACE_ENTER(l);    rc = ajp14_unmarshal_context_state_reply(msg, c, l);    JK_TRACE_EXIT(l);    return rc;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -