Return-Path: X-Original-To: apmail-trafficserver-users-archive@www.apache.org Delivered-To: apmail-trafficserver-users-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 54B1FCD2E for ; Thu, 17 May 2012 20:39:45 +0000 (UTC) Received: (qmail 13610 invoked by uid 500); 17 May 2012 20:39:45 -0000 Delivered-To: apmail-trafficserver-users-archive@trafficserver.apache.org Received: (qmail 13507 invoked by uid 500); 17 May 2012 20:39:45 -0000 Mailing-List: contact users-help@trafficserver.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@trafficserver.apache.org Delivered-To: mailing list users@trafficserver.apache.org Received: (qmail 13497 invoked by uid 99); 17 May 2012 20:39:45 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 17 May 2012 20:39:45 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: local policy) Received: from [74.125.82.170] (HELO mail-we0-f170.google.com) (74.125.82.170) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 17 May 2012 20:39:38 +0000 Received: by werm13 with SMTP id m13so1648714wer.29 for ; Thu, 17 May 2012 13:39:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=content-type:mime-version:subject:from:in-reply-to:date :content-transfer-encoding:message-id:references:to:x-mailer :x-gm-message-state; bh=Gw2M2Ax3sYTXnjJ7eHjE2EHNsZIr1QaY9XQYikT/3FI=; b=icU2KkODvGreoWxGrbXYiI3U1eZKN1VBNLJvwl3FyXu1oTyOQJsIg7LxXiXSxJIIUD 8MXGDuJ9tUBtCMwWHhq8Jm55C+cC86rnk8H7zlI1g6UqWIWjF4CCVrZeS0Z4RhPpF5Rb zGvMCNK/3qITTyw6cXEgiv55omqdOvz8i2eIngHSdU45xMPZhvmhWGRHsb55H/0YIJ35 OpxA7kjAth/8kTCOxfflb6wPoXuSXWZrVL4Fi6W22ev43L0sQwObpWsslzC1L/a8yhpL pK7cRjC8M/8hV7mhSQykKtOBML9vVJRl/YbT6ot5y1nTCO4/YrIoINkw+4+DfJsCFVOf uwDQ== Received: by 10.180.74.68 with SMTP id r4mr21599211wiv.13.1337287157207; Thu, 17 May 2012 13:39:17 -0700 (PDT) Received: from [192.168.30.22] (80.174.93.243.dyn.user.ono.com. [80.174.93.243]) by mx.google.com with ESMTPS id b3sm59354884wib.4.2012.05.17.13.39.15 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 17 May 2012 13:39:16 -0700 (PDT) Content-Type: text/plain; charset=windows-1252 Mime-Version: 1.0 (Apple Message framework v1257) Subject: Re: ESI Plugin From: =?iso-8859-1?Q?Jorge_Rom=E1n_Novalbos?= In-Reply-To: <6F9CD29B-9D4C-4408-9E8C-415C2187A9E9@gmail.com> Date: Thu, 17 May 2012 22:39:13 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: <6EFEEF98-936A-42ED-A8AF-A54C86475ACF@linux-it.es> References: <50CA8092-C80E-457F-B19A-C410856F57DB@linux-it.es> <3A6F78D0-CBC8-4461-A94E-B033FA054475@linux-it.es> <9979F397-4EF3-4381-A6D3-3027F2D56F68@linux-it.es> <31D32DF0-9038-4350-8C5C-EFE9BDCCA1E7@gmail.com> <461FF899-9D62-4ACD-B9F5-A8C8B3ED4146@linux-it.es> <6F9CD29B-9D4C-4408-9E8C-415C2187A9E9@gmail.com> To: users@trafficserver.apache.org X-Mailer: Apple Mail (2.1257) X-Gm-Message-State: ALoCoQn9ndoxcBK36Z86i8NTNDgcXZKYU5WCDv3HdPp2C9Xj/ZBu1Ys+BaEq4mkZ3POFs1t77L4Q First of all, I'm sorry I'm a newbie in esi tags and it's being so = confusing for me=85. On 17/05/2012, at 21:41, Kit Chan wrote: > It seems that the plugin is not getting any response body from the = first request.=20 >=20 >> http://ori.servotic.com/esi/esi.php?p >=20 >=20 > So it thinks that there is no esi markup to interpret. This is the content of esi.html: The time is: at this very moment. and this is the date.php In the vhost configuration I add the X-Esi header like this: Header set Cache-control no-cache Header set X-Esi 1 >=20 > Do you have output of squid.blog or squid.log? It should show two = requests of status 200 if it is all good and successful 1337286567.313 347 10.6.0.6 TCP_MISS/200 296 GET = http://www.servotic.com/esi/esi.html - DIRECT/ori.servotic.com text/html = Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:12.0) Gecko/20100101 = Firefox/12.0 - >=20 > Also what is the corresponding line in remap.config? And what is the = actual url in the esi include? What is the url of the actual request = from user? Your esi include url in the first request cannot be arbitrary = and must be handled by one of the lines in remap.config In remap.config: map http://www.servotic.com/ http://ori.servotic.com/ = @plugin=3Dconf_remap.so = @pparam=3D/opt/trafficserver/etc/trafficserver/clientes/servotic.conf=20 In my plugin.config esi.so The url that i asking for is http://www.servotic.com/esi/esi.html but = pointer to my staging enviroment, I mean this request is not working in = the production enviroment. >=20 > Thanks > Kit >=20 > Sent from my iPhone >=20 > On May 17, 2012, at 6:12 PM, Jorge Rom=E1n Novalbos = wrote: >=20 >> You're right that was one of my problem but it still doesn't work. = This is the traffic.out output in debug mode while a esi request is = processing: >>=20 >>=20 >> [May 17 18:10:36.051] Server {47745214236416} DIAG: (plugin_esi) = [isInterceptRequest] Skipping external request >> [May 17 18:10:36.051] Server {47745214236416} DIAG: (plugin_esi) = [globalHookHandler] handling read request header event... >> [May 17 18:10:36.051] Server {47745214236416} DIAG: (plugin_esi) = [globalHookHandler] Not setting up intercept >> [May 17 18:10:36.051] Server {47745214236416} DIAG: (plugin_esi) = [isInterceptRequest] Skipping external request >> [May 17 18:10:36.051] Server {47745214236416} DIAG: (plugin_esi) = [globalHookHandler] handling cache lookup complete event... >> [May 17 18:10:36.051] Server {47745214236416} DIAG: (plugin_esi) = [isCacheObjTransformable] cache object's status is 0; not transformable >> [May 17 18:10:36.385] Server {47745214236416} DIAG: (plugin_esi) = [isInterceptRequest] Skipping external request >> [May 17 18:10:36.385] Server {47745214236416} DIAG: (plugin_esi) = [globalHookHandler] handling read response header event... >> [May 17 18:10:36.385] Server {47745214236416} DIAG: (plugin_esi) = [isCacheObjTransformable] cache object's status is 0; not transformable >> [May 17 18:10:36.385] Server {47745214236416} DIAG: (plugin_esi) = [getClientState] Got request URL [http://ori.servotic.com/esi/esi.php?p] >> [May 17 18:10:36.385] Server {47745214236416} DIAG: = (plugin_esi_vars_0x2b6c90dcd480) [populate] Not retaining header = [Accept] >> [May 17 18:10:36.385] Server {47745214236416} DIAG: = (plugin_esi_vars_0x2b6c90dcd480) [populate] Not retaining header = [Accept] >> [May 17 18:10:36.385] Server {47745214236416} DIAG: = (plugin_esi_vars_0x2b6c90dcd480) [populate] Not retaining header = [Accept] >> [May 17 18:10:36.385] Server {47745214236416} DIAG: = (plugin_esi_vars_0x2b6c90dcd480) [populate] Not retaining header = [Accept] >> [May 17 18:10:36.385] Server {47745214236416} DIAG: = (plugin_esi_vars_0x2b6c90dcd480) [populate] Not retaining header = [Accept-Encoding] >> [May 17 18:10:36.385] Server {47745214236416} DIAG: (plugin_esi) = [getClientState] Client accepts gzip encoding; will compress output >> [May 17 18:10:36.385] Server {47745214236416} DIAG: = (plugin_esi_vars_0x2b6c90dcd480) [populate] Not retaining header = [Accept-Encoding] >> [May 17 18:10:36.386] Server {47745214236416} DIAG: = (plugin_esi_vars_0x2b6c90dcd480) [populate] Not retaining header = [Connection] >> [May 17 18:10:36.386] Server {47745214236416} DIAG: (plugin_esi) = [getServerState] Not retaining 'X-Esi' header >> [May 17 18:10:36.386] Server {47745214236416} DIAG: (plugin_esi) = [getServerState] Not retaining 'vary: accept-encoding' header >> [May 17 18:10:36.386] Server {47745214236416} DIAG: (plugin_esi) = [getServerState] Not retaining 'content-encoding: gzip' header >> [May 17 18:10:36.386] Server {47745214236416} DIAG: (plugin_esi) = [getServerState] Not retaining 'Content-length' header >> [May 17 18:10:36.386] Server {47745214236416} DIAG: (plugin_esi) = [addTransform] Added transformation (0x0x2b6c90dcd480) >> [May 17 18:10:36.386] Server {47745215289088} DIAG: = (plugin_esi_0x2b6c90dcd480) [init] Set input data type to [GZIPPED_ESI] >> [May 17 18:10:36.386] Server {47745215289088} DIAG: = (plugin_esi_0x2b6c90dcd480) [transformHandler] initialized continuation = data >> [May 17 18:10:36.386] Server {47745215289088} DIAG: = (plugin_esi_fetcher_0x2b6c90dcd480) [_isFetchEvent] Event id 1 not = within fetch event id range [10000, 10000) >> [May 17 18:10:36.386] Server {47745215289088} DIAG: = (plugin_esi_0x2b6c90dcd480) [transformHandler] handling = TS_EVENT_IMMEDIATE... >> [May 17 18:10:36.386] Server {47745215289088} DIAG: = (plugin_esi_0x2b6c90dcd480) [transformData] upstream VC has 126 bytes = available to read >> [May 17 18:10:36.386] Server {47745215289088} DIAG: = (plugin_esi_0x2b6c90dcd480) [transformData] Added chunk of 126 bytes = starting with [] to parse list >> [May 17 18:10:36.386] Server {47745215289088} DIAG: = (plugin_esi_0x2b6c90dcd480) [transformData] Consumed 126 bytes from = upstream VC >> [May 17 18:10:36.386] Server {47745215289088} DIAG: = (plugin_esi_0x2b6c90dcd480) [transformData] Completed reading input... >> [May 17 18:10:36.386] Server {47745215289088} DIAG: = (plugin_esi_processor_0x2b6c90dcd480) [completeParse] Implicit call to = start() >> [May 17 18:10:36.386] Server {47745215289088} DIAG: = (plugin_esi_parser_0x2b6c90dcd480) [_setup] Returning true for empty = data >> [May 17 18:10:36.386] Server {47745215289088} DIAG: = (plugin_esi_parser_0x2b6c90dcd480) [_completeParse] No data to parse! >> [May 17 18:10:36.386] Server {47745215289088} DIAG: = (plugin_esi_processor_0x2b6c90dcd480) [_handleParseComplete] Parsed ESI = document with 0 nodes >> [May 17 18:10:36.386] Server {47745215289088} DIAG: = (plugin_esi_0x2b6c90dcd480) [transformData] data ready; going to process = doc >> [May 17 18:10:36.386] Server {47745215289088} DIAG: = (plugin_esi_processor_0x2b6c90dcd480) [process] ESI processed document = of size 0 starting with [(null)] >> [May 17 18:10:36.386] Server {47745215289088} DIAG: = (plugin_esi_0x2b6c90dcd480) [transformData] ESI processor output = document of size 0 starting with [(null)] >> [May 17 18:10:36.386] Server {47745215289088} DIAG: = (plugin_esi_0x2b6c90dcd480) [transformData] Compressed document from = size 0 to 20 bytes >> [May 17 18:10:36.387] Server {47745216341760} DIAG: (plugin_esi) = [modifyResponseHeader] Removing header with name [Cache-Control] >> [May 17 18:10:36.387] Server {47745216341760} DIAG: (plugin_esi) = [modifyResponseHeader] Removing header with name [X-Esi] >> [May 17 18:10:36.387] Server {47745216341760} DIAG: (plugin_esi) = [modifyResponseHeader] Removing header with name [Age] >> [May 17 18:10:36.387] Server {47745216341760} DIAG: (plugin_esi) = [modifyResponseHeader] Inspected client-bound headers >> [May 17 18:10:36.387] Server {47745213183744} DIAG: = (plugin_esi_fetcher_0x2b6c90dcd480) [_isFetchEvent] Event id 103 not = within fetch event id range [10000, 10000) >> [May 17 18:10:36.387] Server {47745213183744} DIAG: = (plugin_esi_0x2b6c90dcd480) [transformHandler] shutting down = transformation >> [May 17 18:10:36.398] Server {47745194728736} DIAG: = (plugin_esi_0x2b6c90dcd480) [checkXformStatus] Vconn closed >> [May 17 18:10:36.398] Server {47745194728736} DIAG: = (plugin_esi_fetcher_0x2b6c90dcd480) [_isFetchEvent] Event id 1 not = within fetch event id range [10000, 10000) >> [May 17 18:10:36.398] Server {47745194728736} DIAG: = (plugin_esi_0x2b6c90dcd480) [transformHandler] Transformation closed. = Post-processing... >> [May 17 18:10:36.398] Server {47745194728736} DIAG: = (plugin_esi_0x2b6c90dcd480) [transformHandler] Processing is complete, = not processing current event 1 >> [May 17 18:10:36.398] Server {47745194728736} DIAG: = (plugin_esi_0x2b6c90dcd480) [transformHandler] transformation closed; = cleaning up data... >> [May 17 18:10:36.398] Server {47745194728736} DIAG: = (plugin_esi_0x2b6c90dcd480) [~ContData] Destroying continuation data >>=20 >>=20 >> On 17/05/2012, at 17:23, Kit Chan wrote: >>=20 >>> Without looking too deep into all info, i think the problem is that = u need to have a response header of >>>=20 >>> X-Esi: 1 >>>=20 >>> with esi.html >>>=20 >>> Sent from my iPhone >>>=20 >>> On May 16, 2012, at 6:01 PM, Jorge Rom=E1n Novalbos = wrote: >>>=20 >>>> I have the plugin compiled. >>>>=20 >>>> Finally I downloaded the sources from = https://github.com/shukitchan/trafficserver-plugins/ with the problems = fixes. >>>>=20 >>>> Now I'm trying to test the plugin. >>>>=20 >>>> For this test i have created two file: >>>>=20 >>>> - esi.html >>>>=20 >>>> >>>> >>>> The time is: >>>> at this very moment. >>>> >>>> >>>>=20 >>>> - esi.php >>>>=20 >>>> >>> echo date('l jS \of F Y h:i:s A'); >>>> ?> >>>>=20 >>>>=20 >>>> When i ask for esi.html the date is not displayed, so esi plugin it = doesn't work.=20 >>>>=20 >>>> My question, =BFDo i have to activate the ESI in order to process = that url? Sorry, but i can't find much documentation about how to = implement ATS with ESI tags. >>>>=20 >>>> P.S: I have activated the plugin in plugin.config >>>>=20 >>>>=20 >>>>=20 >>>>=20 >>>> On 16/05/2012, at 12:22, Jorge Rom=E1n Novalbos wrote: >>>>=20 >>>>> I am focusing with compile the pluging using the make command and = i have achieved some advances.=20 >>>>>=20 >>>>> I have installed some packages (libboost1.42-dev and = gcc-4.4-locales) and the error now is: >>>>>=20 >>>>> root@ts1:~/ATS-plugins/trafficserver-plugins/esi# make >>>>> tsxs -v -I lib -I fetcher/ -C plugin.cc serverIntercept.cc = lib/*.cc fetcher/*.cc -o esi.so >>>>> compiling plugin.cc -> plugin.lo >>>>> g++ -I/opt/trafficserver-3.0.4/include -Ilib -Ifetcher/ -g -pipe = -Wall -Werror -O3 -feliminate-unused-debug-symbols -fno-strict-aliasing = -Wno-invalid-offsetof -fpic -c plugin.cc -o plugin.lo >>>>> En el fichero inclu=EDdo de /usr/include/c++/4.4/ext/hash_map:60, >>>>> de lib/StringHash.h:29, >>>>> de lib/EsiProcessor.h:31, >>>>> de plugin.cc:34: >>>>> /usr/include/c++/4.4/backward/backward_warning.h:28:2: error: = #warning This file includes at least one deprecated or antiquated header = which may be removed without further notice at a future date. Please use = a non-deprecated interface with equivalent functionality instead. For a = listing of replacement headers and interfaces, consult the file = backward_warning.h. To disable this warning use -Wno-deprecated. >>>>> plugin.cc: In function =91void cacheNodeList(ContData*)=92: >>>>> plugin.cc:453: error: conversi=F3n inv=E1lida de =91const = sockaddr*=92 a =91unsigned int=92 >>>>> plugin.cc:453: error: conversi=F3n inv=E1lida de =91tsapi_cont*=92 = a =91int=92 >>>>> plugin.cc:453: error: no se puede convertir =91TSFetchWakeUpOptions=92= a =91tsapi_cont*=92 para el argumento =915=92 para =91void = TSFetchUrl(const char*, int, unsigned int, int, tsapi_cont*, = TSFetchWakeUpOptions, TSFetchEvent)=92 >>>>> Compile failed: g++ -I/opt/trafficserver-3.0.4/include -Ilib = -Ifetcher/ -g -pipe -Wall -Werror -O3 -feliminate-unused-debug-symbols = -fno-strict-aliasing -Wno-invalid-offsetof -fpic -c plugin.cc -o = plugin.lo >>>>> make: *** [all] Error 1 >>>>>=20 >>>>>=20 >>>>>=20 >>>>> I'm debuging the make command with strace but I'm not able to fix = the problem. Some advices? >>>>>=20 >>>>>=20 >>>>> On 16/05/2012, at 10:51, Jorge Rom=E1n Novalbos wrote: >>>>>=20 >>>>>> Hi all,=20 >>>>>>=20 >>>>>> I'm compiling the ESI plugin in my trafficserver-3.0.4. I = downloaded the plugins from repository and i have followed the next = steps: >>>>>>=20 >>>>>> 1. cd trafficserver-plugins/esi >>>>>> 2. /opt/trafficserver/bin/tsxs -o esi.so -c serverIntercept.cc >>>>>> 3 /opt/trafficserver/bin/tsxs -o esi.so -i >>>>>> 4 edit /opt/trafficserver/etc/trafficserver/plugin.config an add = esi.so >>>>>> 5. Restart trafficserver daemon. >>>>>>=20 >>>>>>=20 >>>>>> The traffic_server process never start because can't load the esi = plugin. The traffic.out show these lines: >>>>>>=20 >>>>>> [May 16 10:31:49.263] Server {47992987118880} ERROR: unable to = find TSPluginInit function = '/opt/trafficserver-3.0.4/libexec/trafficserver/esi.so': = /opt/trafficserver-3.0.4/libexec/trafficserver/esi.so: undefined symbol: = TSPluginInit >>>>>> [May 16 10:31:50.361] Manager {140531591419680} ERROR: = [LocalManager::pollMgmtProcessServer] Server Process terminated due to = Sig 6: Aborted >>>>>> [May 16 10:31:50.361] Manager {140531591419680} ERROR: (last = system error 2: No such file or directory) >>>>>> [May 16 10:31:50.361] Manager {140531591419680} ERROR: = [Alarms::signalAlarm] Server Process was reset >>>>>> [May 16 10:31:50.361] Manager {140531591419680} ERROR: (last = system error 2: No such file or director y) >>>>>>=20 >>>>>> Obviously something is wrong in esi pluging but I don't know if i = am doing some step wrong. >>>>>>=20 >>>>>> I have tried to use the Makefile file in esi source but never = compile. This is the error: >>>>>>=20 >>>>>> root@ts1:~/ATS-plugins/trafficserver-plugins/esi# make >>>>>> tsxs -v -I lib -I fetcher/ -C plugin.cc serverIntercept.cc = lib/*.cc fetcher/*.cc -o esi.so >>>>>> compiling plugin.cc -> plugin.lo >>>>>> g++ -I/opt/trafficserver-3.0.4/include -Ilib -Ifetcher/ -g -pipe = -Wall -Werror -O3 -feliminate-unused-debug-symbols -fno-strict-aliasing = -Wno-invalid-offsetof -fpic -c plugin.cc -o plugin.lo >>>>>> In file included from /usr/include/c++/4.4/ext/hash_map:60, >>>>>> from lib/StringHash.h:29, >>>>>> from lib/EsiProcessor.h:31, >>>>>> from plugin.cc:34: >>>>>> /usr/include/c++/4.4/backward/backward_warning.h:28:2: error: = #warning This file includes at least one deprecated or antiquated header = which may be removed without further notice at a future date. Please use = a non-deprecated interface with equivalent functionality instead. For a = listing of replacement headers and interfaces, consult the file = backward_warning.h. To disable this warning use -Wno-deprecated. >>>>>> In file included from lib/EsiProcessor.h:35, >>>>>> from plugin.cc:34: >>>>>> lib/Variables.h:29:33: error: boost/noncopyable.hpp: No existe el = fichero o el directorio >>>>>> In file included from lib/EsiProcessor.h:35, >>>>>> from plugin.cc:34: >>>>>> lib/Variables.h:38: error: =91boost=92 has not been declared >>>>>> lib/Variables.h:38: error: expected =91{=92 before =91noncopyable=92= >>>>>> lib/Variables.h:38: error: invalid type in declaration before =91{=92= token >>>>>> cc1plus: warnings being treated as errors >>>>>> lib/Variables.h:38: error: extended initializer lists only = available with -std=3Dc++0x or -std=3Dgnu++0x >>>>>> lib/Variables.h:40: error: expected primary-expression before = =91public=92 >>>>>> lib/Variables.h:40: error: expected =91}=92 before =91public=92 >>>>>> lib/Variables.h:40: error: expected =91,=92 or =91;=92 before = =91public=92 >>>>>> lib/Variables.h: In function =91void EsiLib::populate(const = char*, int)=92: >>>>>> lib/Variables.h:60: error: =91_query_string_parsed=92 was not = declared in this scope >>>>>> lib/Variables.h:61: error: =91_parseQueryString=92 was not = declared in this scope >>>>>> lib/Variables.h:63: error: =91_query_string=92 was not declared = in this scope >>>>>> lib/Variables.h: At global scope: >>>>>> lib/Variables.h:70: error: non-member function =91const = std::string& EsiLib::getValue(const std::string&)=92 cannot have = cv-qualifier >>>>>> lib/Variables.h:73: error: non-member function =91const = std::string& EsiLib::getValue(const char*, int)=92 cannot have = cv-qualifier >>>>>> lib/Variables.h: In function =91const std::string& = EsiLib::getValue(const char*, int)=92: >>>>>> lib/Variables.h:75: error: =91EMPTY_STRING=92 was not declared in = this scope >>>>>> lib/Variables.h: At global scope: >>>>>> lib/Variables.h:88: error: declaration of =91~EsiLib::Variables=92 = as non-member >>>>>> lib/Variables.h:90: error: expected unqualified-id before = =91private=92 >>>>>> lib/Variables.h:99: error: storage size of = =91EsiLib::SIMPLE_HEADERS=92 isn't known >>>>>> lib/Variables.h:102: error: storage size of = =91EsiLib::SPECIAL_HEADERS=92 isn't known >>>>>> lib/Variables.h:105: error: storage size of = =91EsiLib::NORM_SIMPLE_HEADERS=92 isn't known >>>>>> lib/Variables.h:106: error: storage size of = =91EsiLib::NORM_SPECIAL_HEADERS=92 isn't known >>>>>> lib/Variables.h:114: error: non-member function =91std::string& = EsiLib::_toUpperCase(std::string&)=92 cannot have cv-qualifier >>>>>> lib/Variables.h:115: error: non-member function =91int = EsiLib::_searchHeaders(const std::string*, const char*, int)=92 cannot = have cv-qualifier >>>>>> lib/Variables.h:117: error: non-member function =91bool = EsiLib::_parseDictVariable(const std::string&, const char*&, int&, const = char*&, int&)=92 cannot have cv-qualifier >>>>>> lib/Variables.h:150: error: non-member function =91const = std::string& EsiLib::_getSubCookieValue(const std::string&, size_t)=92 = cannot have cv-qualifier >>>>>> lib/Variables.h:154: error: expected declaration before =91}=92 = token >>>>>> lib/Variables.h:99: error: =91EsiLib::SIMPLE_HEADERS=92 defined = but not used >>>>>> lib/Variables.h:102: error: =91EsiLib::SPECIAL_HEADERS=92 defined = but not used >>>>>> lib/Variables.h:105: error: =91EsiLib::NORM_SIMPLE_HEADERS=92 = defined but not used >>>>>> lib/Variables.h:106: error: =91EsiLib::NORM_SPECIAL_HEADERS=92 = defined but not used >>>>>> Compile failed: g++ -I/opt/trafficserver-3.0.4/include -Ilib = -Ifetcher/ -g -pipe -Wall -Werror -O3 -feliminate-unused-debug-symbols = -fno-strict-aliasing -Wno-invalid-offsetof -fpic -c plugin.cc -o = plugin.lo >>>>>> make: *** [all] Error 1 >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> could anybody help me? >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> Thanks to all developer for this amaizing software. >>>>>=20 >>>>=20 >>=20