亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mod_gsoap.c

?? 基于Linux平臺的SNMP/SOAP客服端源碼:很不錯的東西,可以學習,也可以應用開發.
?? C
?? 第 1 頁 / 共 4 頁
字號:
/** Apache SOAP module for Apache 1.3.x * @file mod_gsoap.c * @author Christian Aberger (http://www.aberger.at) * updated by David Viner (dviner@apache.org) */#if !defined(__GNUC__) || __GNUC__ < 2 || \    (__GNUC__ == 2 && __GNUC_MINOR__ < 7) ||\    defined(NEXT)#ifndef __attribute__#define __attribute__(__x)#endif#endif/* * Moved gsoap include to top.  Without this, there's a parse error * introduced if gsoap was compiled with -DWITH_OPENSSL. */#include "stdsoap2.h"           // standard header for gsoap#include <stdio.h>#include <assert.h>#include "httpd.h"#include "http_config.h"#include "http_core.h"#include "http_log.h"#include "http_main.h"#include "http_protocol.h"#include "http_request.h"#include "util_script.h"#include "apache_gsoap.h"typedef int bool;#define false 0#define true ((int)0xffff)#define IOBUF_CHUNK_SIZE 8192#define GSOAP_ID "Apache mod_gsoap gsoap httpd extension 0.0.6"/** A shared library containing a SOAP server. */typedef struct SoapSharedLibrary_S {    pool *m_pPool;    void *m_hLibrary;           ///< handle of the loaded libray.    const char *m_pszPath;      ///< the path of the library, including the name.    bool m_bIsSOAPLibrary;      ///< is this library a SOAP library that contains the server factory entry point?} SoapSharedLibrary;/** Table of shared libraries that are already loaded. * a singleton. */typedef struct SoapSharedLibraries_S {    pool *m_pPool;    SoapSharedLibrary *m_pSOAPLibrary;  ///< the main SOAP library that will serve our requests    array_header *m_pLibraries; ///< the array where we store our libraries.    apache_init_soap_interface_fn m_pfnEntryPoint;    struct apache_soap_interface *m_pIntf;    bool m_bAllLibrariesLoaded; ///< have all libraries in our libraries collection been already successfully loaded?} SoapSharedLibraries;/** Environment to which record applies (directory, * server, or combination). */typedef enum enConfigurationType {    ct_server = 1,              ///< used for per-server configuration    ct_directory = 2,           ///< used for per-directory configuration    ct_both = 3                 ///< used for both} ConfigurationType;/** Store the configuration information set in the Apache Server configuration directives. * These are set e.g. in the file httpd.conf * It's perfectly reasonable to have two different structures for the two * different environments.  The same command handlers will be called for * both, though, so the handlers need to be able to tell them apart.  One * possibility is for both structures to start with an int which is zero for * one and 1 for the other. * * Note that while the per-directory and per-server configuration records are * available to most of the module handlers, they should be treated as * READ-ONLY by all except the command and merge handlers.  Sometimes handlers * are handed a record that applies to the current location by implication or * inheritance, and modifying it will change the rules for other locations. */typedef struct gsoapConfiguration_S {    SoapSharedLibraries *m_pLibraries;    ConfigurationType m_Type;   ///< the type of configuration environment} gsoapConfiguration;/** Our internal per request soap configuration */typedef struct gsoapRequestConfiguration_S {    request_rec *r;             ///< the current request record.    char *m_pszAllHeaders;      ///< all headers received as a string, this is returned to gsoap's http_parse function before we return the body.    const char *m_pszCurrentHeaderReadingPosition;  ///< the position where the next header read operation will start.    unsigned int m_nHeaderLength;   ///< total length of all headers concatenated as string     char *m_pOutBuf;            ///< output buffer    size_t m_nOutBufLength;     ///< allocated length of output buffer    size_t m_nOutBufCount;      ///< bytes in output buffer    int headers_sent;           ///< have http - headers already been sent to client us?    int headers_received;       ///< have the request headers already been passed to gsoap ?     int (*http_parse) (struct soap *);  ///< the original gsoap parsing function.    struct apache_soap_interface *pIntf;} gsoapRequestConfiguration;/* * To avoid leaking memory from pools other than the per-request one, we * allocate a module-private pool. */static pool *the_gsoapPool = NULL;/** @return our pool for gsoapConfiguration */static pool *gsoapConfiguration_getModulePool(){    if(NULL == the_gsoapPool)    {        the_gsoapPool = ap_make_sub_pool(NULL);    }    return the_gsoapPool;}static gsoapConfiguration *getConfiguration(request_rec * r);static gsoapRequestConfiguration *getRequestConfiguration(struct soap *);/**   @param p the pool to use for memory allocations.   @param pszPath the path of the library.*/static voidSoapSharedLibrary_init(SoapSharedLibrary * This, pool * p,                       const SoapSharedLibrary * pLib){    This->m_pPool = p;    This->m_hLibrary = NULL;    This->m_pszPath = ap_pstrdup(p, pLib->m_pszPath);    This->m_bIsSOAPLibrary = pLib->m_bIsSOAPLibrary;}static voidSoapSharedLibrary_init2(SoapSharedLibrary * This, pool * p, const char *pszPath){    This->m_pPool = p;    This->m_hLibrary = NULL;    This->m_pszPath = ap_pstrdup(p, pszPath);    This->m_bIsSOAPLibrary = false;}static voidSoapSharedLibrary_clear(SoapSharedLibrary * This, pool * p){    This->m_pPool = p;    This->m_hLibrary = NULL;    This->m_pszPath = NULL;    This->m_bIsSOAPLibrary = false;}static SoapSharedLibrary *SoapSharedLibrary_create(pool * p){    SoapSharedLibrary *This =        (SoapSharedLibrary *) ap_pcalloc(p, sizeof(SoapSharedLibrary));    SoapSharedLibrary_clear(This, p);    return This;}/** *	@param pTempPool pool to use for allocating temporary objects (e.g. error message). */static const char *SoapSharedLibrary_load(SoapSharedLibrary * This, pool * pTempPool){    const char *pszError = NULL;    const int nFlags = RTLD_LAZY | RTLD_GLOBAL;    This->m_hLibrary = (void *)dlopen(This->m_pszPath, nFlags);    pszError = dlerror();    if(NULL == This->m_hLibrary)    {        pszError =            ap_psprintf(NULL == pTempPool ? This->m_pPool : pTempPool,                        "mod_gsoap: %s loading library %s", pszError,                        This->m_pszPath);    }    return pszError;}/*-------------------------------------------------------*/static voidSoapSharedLibraries_init(SoapSharedLibraries * This, pool * p){    This->m_pPool = p;    This->m_pSOAPLibrary = NULL;    This->m_pLibraries = ap_make_array(p, 0, sizeof(SoapSharedLibrary **));    This->m_bAllLibrariesLoaded = false;    This->m_pfnEntryPoint = NULL;    This->m_pIntf =        (struct apache_soap_interface *)ap_pcalloc(p,                                                   sizeof(struct                                                          apache_soap_interface));}static SoapSharedLibrary *SoapSharedLibraries_getLibrary(SoapSharedLibraries * This, unsigned nIndex){    SoapSharedLibrary **ppLibs = NULL;    SoapSharedLibrary *pLib = NULL;    assert(NULL != This);    assert(NULL != This->m_pLibraries);    assert(nIndex >= 0);    assert(nIndex < This->m_pLibraries->nelts);    ppLibs = (SoapSharedLibrary **) This->m_pLibraries->elts;    pLib = ppLibs[nIndex];    return pLib;}/** * @param pszPath the operating system name of the library. */static boolSoapSharedLibraries_contains(SoapSharedLibraries * This, const char *pszPath){    int i = 0;    bool bContains = false;    for(i = 0; i < This->m_pLibraries->nelts && !bContains; i++)    {        SoapSharedLibrary *pLib = SoapSharedLibraries_getLibrary(This, i);        assert(NULL != pLib);        if(0 == strcmp(pszPath, pLib->m_pszPath))        {            bContains = true;        }    }    return bContains;}static voidSoapSharedLibraries_addLibrary(SoapSharedLibraries * This,                               SoapSharedLibrary * pLibrary){    assert(NULL != pLibrary);    This->m_bAllLibrariesLoaded = false;    if(!SoapSharedLibraries_contains(This, pLibrary->m_pszPath))    {        SoapSharedLibrary **ppNewLib =            (SoapSharedLibrary **) ap_push_array(This->m_pLibraries);        *ppNewLib = pLibrary;        if(pLibrary->m_bIsSOAPLibrary)        {            This->m_pSOAPLibrary = pLibrary;        }    }}static const char *SoapSharedLibraries_getEntryPoints(SoapSharedLibraries * This,                                   SoapSharedLibrary * pLib, pool * pTempPool,                                   request_rec * r){    /*     * now we also pass the request record      */    (*This->m_pfnEntryPoint) (This->m_pIntf, r);    return NULL;}/** * @return the error message if a load failed, NULL on success. */static const char *SoapSharedLibraries_loadAllLibraries(SoapSharedLibraries * This,                                     pool * pTempPool, request_rec * r){    bool bAllLibrariesLoaded = false;    const char *pszError = NULL;    bool bRetry = false;    int i = 0;    int nRetry = 0;    assert(NULL != This);    if(This->m_bAllLibrariesLoaded)    {        return NULL;    }    for(nRetry = 0; nRetry < 5 && !bAllLibrariesLoaded; nRetry++)    {        do        {            pszError = NULL;            bRetry = false;     // don't try it again.            bAllLibrariesLoaded = true;            for(i = 0; i < This->m_pLibraries->nelts; i++)            {                SoapSharedLibrary *pLib =                    SoapSharedLibraries_getLibrary(This, i);                if(NULL == pLib->m_hLibrary)                {                    pszError = SoapSharedLibrary_load(pLib, pTempPool);                    if(NULL == pszError)                    {                        assert(NULL != pLib->m_hLibrary);                        bRetry = true;  ///< we loaded one, lets retry with all others, maybe they depend on that.                    }                    else                    {                        bAllLibrariesLoaded = false;                    }                    if(NULL != pLib->m_hLibrary && pLib->m_bIsSOAPLibrary)                    {                        void *pfun = (void *)dlsym(pLib->m_hLibrary,                                                   APACHE_HTTPSERVER_ENTRY_POINT);                        if(NULL == pfun)                        {                            pszError = ap_psprintf(pTempPool,                                                   "gsoap: load library \"%s\" success, but failed to find the \"%s\" entry point",                                                   pLib->m_pszPath,                                                   APACHE_HTTPSERVER_ENTRY_POINT);                            return pszError;                        }                        else                        {                            This->m_pfnEntryPoint =                                (apache_init_soap_interface_fn) pfun;                            pszError =                                SoapSharedLibraries_getEntryPoints(This, pLib,                                                                   pTempPool,                                                                   r);                        }                    }                }            }        }        while(bRetry);    }    if(bAllLibrariesLoaded)    {        This->m_bAllLibrariesLoaded = true;        pszError = NULL;    }    return pszError;}static voidSoapSharedLibraries_merge(SoapSharedLibraries * This,                          SoapSharedLibraries * pLibs){    int i = 0;    assert(NULL != This);    if(NULL == pLibs)    {        return;    }    This->m_bAllLibrariesLoaded = false;    for(i = 0; i < pLibs->m_pLibraries->nelts; i++)    {        SoapSharedLibrary *pLib = SoapSharedLibraries_getLibrary(pLibs, i);        if(!SoapSharedLibraries_contains(This, pLib->m_pszPath))        {            SoapSharedLibrary *pNewLib =

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久久久久99水蜜桃| 69p69国产精品| 国产日韩欧美激情| 国产福利一区在线观看| 日韩免费看网站| 国产精品99久久久久| 久久精品一二三| 成人免费看视频| 一区二区三区中文在线| 欧美日韩视频在线第一区| 日产国产欧美视频一区精品| 日韩一级二级三级| 欧美一级日韩免费不卡| 久久精品av麻豆的观看方式| 久久久不卡影院| 色一情一伦一子一伦一区| 亚洲国产日韩av| 精品久久久久久最新网址| 国产91精品免费| 亚洲国产另类av| 26uuu亚洲综合色| 一本一本大道香蕉久在线精品| 午夜成人免费视频| 国产喷白浆一区二区三区| 91丨porny丨最新| 美女在线一区二区| 亚洲欧美成人一区二区三区| 91精品国产91久久久久久一区二区| 国产在线精品免费av| 亚洲精品一二三区| 日韩午夜激情电影| 91视频国产资源| 理论电影国产精品| 亚洲免费观看高清完整版在线观看熊| 这里只有精品电影| 不卡的av电影在线观看| 日韩电影在线观看一区| 国产精品欧美一区二区三区| 欧美夫妻性生活| 不卡的电视剧免费网站有什么| 天天色综合成人网| 国产精品免费久久| 日韩一区二区三区视频在线| 99久久精品99国产精品| 美女久久久精品| 一区二区欧美在线观看| 久久精品水蜜桃av综合天堂| 欧美精品一卡二卡| 91在线无精精品入口| 国产在线视频精品一区| 亚洲不卡av一区二区三区| 国产精品久久久久久久裸模| 欧美tickling网站挠脚心| 欧美午夜影院一区| 一本大道久久精品懂色aⅴ| 国产精品亚洲专一区二区三区| 视频在线观看一区| 亚洲综合免费观看高清完整版在线 | 一区二区久久久久久| 国产日韩欧美在线一区| 欧美一区二区高清| 欧美日韩中文国产| 99riav一区二区三区| 国产精品996| 激情综合色丁香一区二区| 一区二区三区**美女毛片| 国产精品色婷婷久久58| 国产视频一区在线观看| 日韩免费看的电影| 日韩视频在线观看一区二区| 欧美日韩另类国产亚洲欧美一级| 成人av在线资源网| 成人动漫一区二区在线| 成人一区二区三区在线观看| 国产激情一区二区三区四区| 国产精品白丝jk黑袜喷水| 狠狠色综合日日| 久久99精品视频| 国产精品一卡二| 国产不卡视频一区| 成人免费高清在线| 99精品桃花视频在线观看| 99在线热播精品免费| 99精品国产热久久91蜜凸| 91免费版在线| 色狠狠综合天天综合综合| 91官网在线观看| 欧美四级电影在线观看| 欧美另类变人与禽xxxxx| 欧美精品v日韩精品v韩国精品v| 欧美精品九九99久久| 制服丝袜中文字幕一区| 欧美一区二区三区喷汁尤物| 日韩视频免费直播| 337p日本欧洲亚洲大胆精品 | 亚洲国产aⅴ成人精品无吗| 亚洲最大色网站| 日本不卡视频一二三区| 蜜臀精品久久久久久蜜臀| 国产精品一级在线| 在线亚洲一区观看| 欧美福利电影网| 欧美精品一区二区高清在线观看| 国产视频一区二区在线观看| 1区2区3区国产精品| 亚洲福利视频三区| 国产一区在线精品| 91免费版在线看| 欧美变态凌虐bdsm| 国产精品国产精品国产专区不蜜| 亚洲高清久久久| 国产一区在线精品| 欧美性视频一区二区三区| 日韩女优电影在线观看| 亚洲国产精品国自产拍av| 亚洲精品高清视频在线观看| 美腿丝袜一区二区三区| 成人免费观看视频| 日韩三级视频在线看| 成人免费一区二区三区在线观看| 日韩电影在线免费| av一区二区久久| 91超碰这里只有精品国产| 久久久久成人黄色影片| 午夜在线成人av| 成人毛片老司机大片| 884aa四虎影成人精品一区| 国产精品欧美一级免费| 男男视频亚洲欧美| 97精品久久久午夜一区二区三区| 91精品欧美久久久久久动漫| 国产精品高潮呻吟| 久久精品国产澳门| 91福利视频网站| 国产日韩欧美一区二区三区乱码| 日韩国产欧美在线播放| www.成人在线| 久久这里只有精品视频网| 亚洲一区二区三区视频在线播放| 国产在线播放一区三区四| 91 com成人网| 亚洲亚洲人成综合网络| 成人动漫在线一区| 精品国产乱码久久久久久老虎| 亚洲成人av免费| 色综合久久天天综合网| 国产香蕉久久精品综合网| 免费视频一区二区| 欧美性猛交xxxx乱大交退制版| 亚洲国产成人私人影院tom| 久久国产精品一区二区| 欧美日韩精品一区二区天天拍小说| 国产精品久久午夜夜伦鲁鲁| 国产精品一卡二卡在线观看| 欧美变态凌虐bdsm| 免费人成网站在线观看欧美高清| 欧美色网一区二区| 一区二区三区高清| 色香蕉久久蜜桃| 椎名由奈av一区二区三区| 成人爽a毛片一区二区免费| 久久―日本道色综合久久| 日本aⅴ精品一区二区三区| 制服.丝袜.亚洲.中文.综合| 五月婷婷久久综合| 欧美美女一区二区| 天天综合日日夜夜精品| 欧美精品一级二级三级| 日本亚洲一区二区| 制服丝袜亚洲播放| 久久电影网站中文字幕| 精品久久久久久最新网址| 国产在线不卡视频| 国产精品伦理在线| 91麻豆视频网站| 亚洲一区av在线| 在线播放视频一区| 捆绑调教美女网站视频一区| 欧美一区二区三区在线观看| 美女一区二区视频| 久久免费午夜影院| voyeur盗摄精品| 亚洲精品免费在线播放| 欧美亚洲免费在线一区| 日韩不卡一二三区| 精品国产亚洲在线| 粉嫩在线一区二区三区视频| 国产精品高潮呻吟| 日本高清不卡在线观看| 午夜精品久久久久久久99水蜜桃 | 久久久久久久网| 成人app下载| 亚洲国产成人av网| 国产69精品一区二区亚洲孕妇| 国产精品久久久久一区二区三区 | 久久蜜臀精品av| 成人精品视频网站| 亚洲综合免费观看高清完整版| 欧美日韩另类国产亚洲欧美一级| 久久99久久久欧美国产|