Hi,
I finalized with the great help of Oleg K. the work on CookieManager and
the validation of TestCookieManager:
- https://github.com/apache/jmeter/pull/64

@Andrei, I added 2 tests for the ".bt.com" case:
- testAddCookieFromHeaderWithWildcard
- testAddCookieFromHeaderWithWildcard2

Can you have a look and see if it answers your issue ?

@Oleg, if you read this mailing list, and can have a look at the code it
would be great.

Thanks


On Wed, Dec 16, 2015 at 9:01 AM, Andrey Pokhilko <[email protected]> wrote:

> I reviewed the code for test case in the PR, looks fine.
>
> Andrey Pokhilko
>
> On 12/16/2015 01:06 AM, Philippe Mouawad wrote:
> > Hi ,
> > I think that's what I wrote no ?
> > It's failing because at step 2 , as the domain is "bt.com" not ".bt.com
> ",
> > we don't send the cookie , so I suppose we break the test.
> >
> > I think in HC4.5 (as per answer of Oleg on ) , domain matching occurs
> based
> > on (((ClientCookie) cookie).containsAttribute(ClientCookie.DOMAIN_ATTR))
> as
> > per BasicDomainHandler#match method used by NetscapeDraftSpec policy.
> > So I think we need to modify the Cookie JMeter class to preserve this
> > information which is used to match cookies to URL.
> >
> > Regards
> >
> >
> > On Tue, Dec 15, 2015 at 10:48 PM, Andrey Pokhilko <[email protected]> wrote:
> >
> >> No.
> >>
> >> Right test case is:
> >> 1. we get cookie for domain .bt.com
> >> 2. We do request to sub.bt.com and expect to send the cookie
> >>
> >> That's the case that was broken with upgrading to 0.4.5 in our field
> tries.
> >>
> >> Andrey Pokhilko
> >>
> >> On 12/16/2015 12:44 AM, Philippe Mouawad wrote:
> >>> Hi Andrei,
> >>> I  am not sure to understand.
> >>>
> >>> If you look at my test case sent to HTTPCLIENT, the cookie is
> transmitted
> >>> for subdomain.bt.com except that domain has value bt.com not ".bt.com
> ".
> >>>
> >>> Do you mean that as on jmeter side , we get "bt.com" as domain, we
> don't
> >>> transmit in next request the cookie for subdomain.bt.com ?
> >>>
> >>> Thanks
> >>>
> >>> On Tue, Dec 15, 2015 at 10:40 PM, Andrey Pokhilko <[email protected]> wrote:
> >>>
> >>>> The impact of it is broken test plans. When cookie is set for .bt.com
> ,
> >>>> it means that subdomain.bt.com must receive that cookie. That's by
> RFC
> >>>> AFAIK.
> >>>>
> >>>> Andrey Pokhilko
> >>>>
> >>>> On 12/15/2015 11:41 PM, Philippe Mouawad wrote:
> >>>>> Hi Andrey,
> >>>>> Test case is failing, but it seems to be a regular HC4.5 behaviour.
> >>>>>
> >>>>> What was the impact of this failing test case on JMeter side ?
> >>>>> It's not clear for me from your mail, if you can give a full example
> >> with
> >>>>> each step it wil help me understand.
> >>>>>
> >>>>> Thanks
> >>>>>
> >>>>> On Tue, Dec 15, 2015 at 5:56 PM, Andrey Pokhilko <[email protected]> wrote:
> >>>>>
> >>>>>> It's one from 10/27/2015 06:32 PM:
> >>>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>> Today we've found an issue in using HTTPClient 4.5 in JMeter. If we
> >> just
> >>>>>> replace the libraries with no change to JMeter code, it stops
> >> processing
> >>>>>> wildcard domains for cookies. I've failed to understand if it is
> >>>>>> regression in HTTPClient or something else.
> >>>>>>
> >>>>>> I've managed to write a unit test for it, I can commit it into trunk
> >> if
> >>>>>> needed. Unit test works fine on old libraries, but fails with 4.5:
> >>>>>>
> >>>>>> package org.apache.jmeter.protocol.http.control;
> >>>>>>
> >>>>>> import org.apache.http.cookie.Cookie;
> >>>>>> import org.apache.jmeter.testelement.property.CollectionProperty;
> >>>>>> import org.junit.Assert;
> >>>>>> import org.junit.Test;
> >>>>>>
> >>>>>> import java.net.URL;
> >>>>>> import java.util.List;
> >>>>>>
> >>>>>> public class HC4CookieHandlerTest {
> >>>>>>
> >>>>>>     @Test public void testAddCookieFromHeader_wildcard() throws
> >>>> Exception {
> >>>>>>         HC4CookieHandler obj = new
> HC4CookieHandler("compatibility");
> >>>>>>         URL url = new URL("https://subdomain.bt.com/page";);
> >>>>>>         CookieManager mgr = new CookieManager();
> >>>>>>         String headerLine = "SMTRYNO=1; path=/; domain=.bt.com";
> >>>>>>         obj.addCookieFromHeader(mgr, true, headerLine, url);
> >>>>>>         CollectionProperty cp = mgr.getCookies();
> >>>>>>         List<Cookie> res = obj.getCookiesForUrl(cp, url, false);
> >>>>>>         Assert.assertEquals(1, res.size());
> >>>>>>         for (Cookie cookie : res) {
> >>>>>>             Assert.assertEquals(".bt.com", cookie.getDomain());
> >>>>>>         }
> >>>>>>     }
> >>>>>> }
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> Andrey Pokhilko
> >>>>>>
> >>>>>> On 12/15/2015 07:44 PM, Philippe Mouawad wrote:
> >>>>>>> I was searching in my mails for it :-) Andrei
> >>>>>>>
> >>>>>>> On Tue, Dec 15, 2015 at 5:40 PM, Andrey Pokhilko <[email protected]>
> wrote:
> >>>>>>>
> >>>>>>>> Hi,
> >>>>>>>>
> >>>>>>>> First of all - you've made awesome job on coordinating all this
> >>>> tedious
> >>>>>>>> communications with Oleg. Thanks, your contribution is invaluable
> in
> >>>> my
> >>>>>>>> eyes.
> >>>>>>>>
> >>>>>>>> Just a note - don't you want to include the test case I provided
> >> some
> >>>>>>>> time ago into this PR? To make sure the initial  case that
> revealed
> >>>>>>>> issues finally works...
> >>>>>>>>
> >>>>>>>> Andrey Pokhilko
> >>>>>>>>
> >>>>>>>> On 12/15/2015 07:31 PM, Philippe Mouawad wrote:
> >>>>>>>>> Hi,
> >>>>>>>>> I submitted a PR https://github.com/apache/jmeter/pull/62  after
> >>>>>> fixing
> >>>>>>>> the
> >>>>>>>>> remaining issues I think.
> >>>>>>>>> I still have one failing test , related to
> >>>>>>>>> https://issues.apache.org/jira/browse/HTTPCLIENT-1705 that I
> >>>> reopened.
> >>>>>>>>> I commented the IgnorePolicy (testCookiePolicyIgnore) test  as we
> >>>> need
> >>>>>>>> 4.5.2
> >>>>>>>>> I changed testCookies2 as per Oleg note and added testCookies3.
> >>>>>>>>>
> >>>>>>>>> Please review as this is very sensitive and I would really like a
> >>>>>> second
> >>>>>>>>> eye on it.
> >>>>>>>>>
> >>>>>>>>> Thanks
> >>>>>>>>> Regards
> >>>>>>>>>
> >>>>>>>>> On Tue, Dec 15, 2015 at 2:16 PM, Philippe Mouawad <
> >>>>>>>>> [email protected]> wrote:
> >>>>>>>>>
> >>>>>>>>>> Hi ,
> >>>>>>>>>> One last question, when is release of 4.5.2 expected as it
> fixes 2
> >>>>>> bugs
> >>>>>>>> we
> >>>>>>>>>> are facing in JMeter.
> >>>>>>>>>>
> >>>>>>>>>> Thanks
> >>>>>>>>>> Regards
> >>>>>>>>>>
> >>>>>>>>>> On Tue, Dec 15, 2015 at 2:05 PM, Philippe Mouawad <
> >>>>>>>>>> [email protected]> wrote:
> >>>>>>>>>>
> >>>>>>>>>>> On Tue, Dec 15, 2015 at 9:36 AM, Oleg Kalnichevski <
> >>>> [email protected]
> >>>>>>>>>>> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>> On Mon, 2015-12-14 at 21:41 +0100, Philippe Mouawad wrote:
> >>>>>>>>>>>>> Hello Oleg,
> >>>>>>>>>>>>> Thanks .
> >>>>>>>>>>>>>
> >>>>>>>>>>>> Test case #testParseCookies
> >>>>>>>>>>>>
> >>>>>>>>>>>> The rest case does not look right to me. I am not sure I
> >>>> understand
> >>>>>>>> what
> >>>>>>>>>>>> you are trying to test here.
> >>>>>>>>>>>>
> >>>>>>>>>>> Indeed, bad copy paste.
> >>>>>>>>>>>
> >>>>>>>>>>> The test fixed below works fine with HTTPCLIENT 4.5.1 so issue
> is
> >>>> on
> >>>>>>>>>>> JMeter side.
> >>>>>>>>>>>
> >>>>>>>>>>>> Test case #testParseCookies
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>> The cookie in question does not have a version attribute
> >> mandatory
> >>>>>> for
> >>>>>>>>>>>> standard (RFC 2109 and RFC 2965) cookies. Therefore it is
> parsed
> >>>> as
> >>>>>>>>>>>> Netscape style cookie in which case comma is not considered a
> >>>> valid
> >>>>>>>>>>>> header element delimiter and is treated as normal character.
> >>>>>>>>>>>>
> >>>>>>>>>>> Thanks for explanation.
> >>>>>>>>>>> Note that test case worked fine in HC3. Was it a bug in HC3 ?
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>> Oleg
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>> Here it is:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> /*
> >>>>>>>>>>>>>  *
> >>>>>>>>
> ====================================================================
> >>>>>>>>>>>>>  * 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.
> >>>>>>>>>>>>>  *
> >>>>>>>>
> ====================================================================
> >>>>>>>>>>>>>  *
> >>>>>>>>>>>>>  * This software consists of voluntary contributions made by
> >> many
> >>>>>>>>>>>>>  * individuals on behalf of the Apache Software Foundation.
> >> For
> >>>>>> more
> >>>>>>>>>>>>>  * information on the Apache Software Foundation, please see
> >>>>>>>>>>>>>  * <http://www.apache.org/>.
> >>>>>>>>>>>>>  *
> >>>>>>>>>>>>>  */
> >>>>>>>>>>>>> package org.apache.http.client.protocol;
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> import java.util.List;
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> import org.apache.http.Header;
> >>>>>>>>>>>>> import org.apache.http.HttpResponse;
> >>>>>>>>>>>>> import org.apache.http.HttpResponseInterceptor;
> >>>>>>>>>>>>> import org.apache.http.HttpVersion;
> >>>>>>>>>>>>> import org.apache.http.client.CookieStore;
> >>>>>>>>>>>>> import org.apache.http.cookie.Cookie;
> >>>>>>>>>>>>> import org.apache.http.cookie.CookieOrigin;
> >>>>>>>>>>>>> import org.apache.http.cookie.CookieSpec;
> >>>>>>>>>>>>> import org.apache.http.cookie.SM;
> >>>>>>>>>>>>> import org.apache.http.impl.client.BasicCookieStore;
> >>>>>>>>>>>>> import org.apache.http.impl.cookie.DefaultCookieSpec;
> >>>>>>>>>>>>> import org.apache.http.message.BasicHttpResponse;
> >>>>>>>>>>>>> import org.apache.http.util.Asserts;
> >>>>>>>>>>>>> import org.junit.Assert;
> >>>>>>>>>>>>> import org.junit.Before;
> >>>>>>>>>>>>> import org.junit.Test;
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> public class TestResponseProcessCookies {
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     private CookieOrigin cookieOrigin;
> >>>>>>>>>>>>>     private CookieSpec cookieSpec;
> >>>>>>>>>>>>>     private CookieStore cookieStore;
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     @Before
> >>>>>>>>>>>>>     public void setUp() throws Exception {
> >>>>>>>>>>>>>         this.cookieOrigin = new CookieOrigin("localhost", 80,
> >>>> "/",
> >>>>>>>>>>>> false);
> >>>>>>>>>>>>>         this.cookieSpec = new DefaultCookieSpec();
> >>>>>>>>>>>>>         this.cookieStore = new BasicCookieStore();
> >>>>>>>>>>>>>     }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     @Test(expected=IllegalArgumentException.class)
> >>>>>>>>>>>>>     public void testResponseParameterCheck() throws
> Exception {
> >>>>>>>>>>>>>         final HttpClientContext context =
> >>>>>> HttpClientContext.create();
> >>>>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>>>         interceptor.process(null, context);
> >>>>>>>>>>>>>     }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     @Test(expected=IllegalArgumentException.class)
> >>>>>>>>>>>>>     public void testContextParameterCheck() throws Exception
> {
> >>>>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>>>         interceptor.process(response, null);
> >>>>>>>>>>>>>     }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     @Test
> >>>>>>>>>>>>>     public void testParseMultipleCookies() throws Exception {
> >>>>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "test1=1;
> >>>>>>>>>>>> comment=\"how,now\",
> >>>>>>>>>>>>> test2=2; version=1");
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpClientContext context =
> >>>>>> HttpClientContext.create();
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final List<Cookie> cookies =
> >>>> this.cookieStore.getCookies();
> >>>>>>>>>>>>>         Assert.assertNotNull(cookies);
> >>>>>>>>>>>>>         Assert.assertEquals(1, cookies.size());
> >>>>>>>>>>>>>         final Cookie cookie = cookies.get(0);
> >>>>>>>>>>>>>         Assert.assertEquals(0, cookie.getVersion());
> >>>>>>>>>>>>>         Assert.assertEquals("name1", cookie.getName());
> >>>>>>>>>>>>>         Assert.assertEquals("value1", cookie.getValue());
> >>>>>>>>>>>>>         Assert.assertEquals("localhost", cookie.getDomain());
> >>>>>>>>>>>>>         Assert.assertEquals("/", cookie.getPath());
> >>>>>>>>>>>>>     }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     @Test
> >>>>>>>>>>>>>     public void testParseCookies() throws Exception {
> >>>>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "name1=value1");
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpClientContext context =
> >>>>>> HttpClientContext.create();
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final List<Cookie> cookies =
> >>>> this.cookieStore.getCookies();
> >>>>>>>>>>>>>         List<Header> lstHdr =
> >> cookieSpec.formatCookies(cookies);
> >>>>>>>>>>>>>         StringBuilder sbHdr = new StringBuilder();
> >>>>>>>>>>>>>         for (Header header : lstHdr) {
> >>>>>>>>>>>>>             sbHdr.append(header.getValue());
> >>>>>>>>>>>>>         }
> >>>>>>>>>>>>>         org.junit.Assert.assertEquals("test1=1; test2=2",
> >>>>>>>>>>>> sbHdr.toString());
> >>>>>>>>>>>>>     }
> >>>>>>>>>>>>>     @Test
> >>>>>>>>>>>>>     public void testParseCookies2() throws Exception {
> >>>>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "test1=1;secure,
> >>>>>>>>>>>> test2=2;secure");
> >>>>>>>>>>>>>         final HttpClientContext context =
> >>>>>> HttpClientContext.create();
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final List<Cookie> cookies =
> >>>> this.cookieStore.getCookies();
> >>>>>>>>>>>>>         List<Header> lstHdr =
> >> cookieSpec.formatCookies(cookies);
> >>>>>>>>>>>>>         StringBuilder sbHdr = new StringBuilder();
> >>>>>>>>>>>>>         for (Header header : lstHdr) {
> >>>>>>>>>>>>>             sbHdr.append(header.getValue());
> >>>>>>>>>>>>>         }
> >>>>>>>>>>>>>         org.junit.Assert.assertEquals("test1=1; test2=2",
> >>>>>>>>>>>> sbHdr.toString());
> >>>>>>>>>>>>>     }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     @Test
> >>>>>>>>>>>>>     public void testNoCookieOrigin() throws Exception {
> >>>>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "name1=value1");
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpClientContext context =
> >>>>>> HttpClientContext.create();
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>> null);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final List<Cookie> cookies =
> >>>> this.cookieStore.getCookies();
> >>>>>>>>>>>>>         Assert.assertNotNull(cookies);
> >>>>>>>>>>>>>         Assert.assertEquals(0, cookies.size());
> >>>>>>>>>>>>>     }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     @Test
> >>>>>>>>>>>>>     public void testNoCookieSpec() throws Exception {
> >>>>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "name1=value1");
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpClientContext context =
> >>>>>> HttpClientContext.create();
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>> null);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final List<Cookie> cookies =
> >>>> this.cookieStore.getCookies();
> >>>>>>>>>>>>>         Assert.assertNotNull(cookies);
> >>>>>>>>>>>>>         Assert.assertEquals(0, cookies.size());
> >>>>>>>>>>>>>     }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     @Test
> >>>>>>>>>>>>>     public void testNoCookieStore() throws Exception {
> >>>>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "name1=value1");
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpClientContext context =
> >>>>>> HttpClientContext.create();
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>> null);
> >>>>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final List<Cookie> cookies =
> >>>> this.cookieStore.getCookies();
> >>>>>>>>>>>>>         Assert.assertNotNull(cookies);
> >>>>>>>>>>>>>         Assert.assertEquals(0, cookies.size());
> >>>>>>>>>>>>>     }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     @Test
> >>>>>>>>>>>>>     public void testSetCookie2OverrideSetCookie() throws
> >>>> Exception
> >>>>>> {
> >>>>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "name1=value1");
> >>>>>>>>>>>>>         response.addHeader(SM.SET_COOKIE2, "name1=value2;
> >>>>>>>> Version=1");
> >>>>>>>>>>>>>         final HttpClientContext context =
> >>>>>> HttpClientContext.create();
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final List<Cookie> cookies =
> >>>> this.cookieStore.getCookies();
> >>>>>>>>>>>>>         Assert.assertNotNull(cookies);
> >>>>>>>>>>>>>         Assert.assertEquals(1, cookies.size());
> >>>>>>>>>>>>>         final Cookie cookie = cookies.get(0);
> >>>>>>>>>>>>>         Assert.assertEquals(1, cookie.getVersion());
> >>>>>>>>>>>>>         Assert.assertEquals("name1", cookie.getName());
> >>>>>>>>>>>>>         Assert.assertEquals("value2", cookie.getValue());
> >>>>>>>>>>>>>         Assert.assertEquals("localhost.local",
> >>>> cookie.getDomain());
> >>>>>>>>>>>>>         Assert.assertEquals("/", cookie.getPath());
> >>>>>>>>>>>>>     }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     @Test
> >>>>>>>>>>>>>     public void testInvalidHeader() throws Exception {
> >>>>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>>>         response.addHeader(SM.SET_COOKIE2, "name=value;
> >>>>>>>> Version=crap");
> >>>>>>>>>>>>>         final HttpClientContext context =
> >>>>>> HttpClientContext.create();
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final List<Cookie> cookies =
> >>>> this.cookieStore.getCookies();
> >>>>>>>>>>>>>         Assert.assertNotNull(cookies);
> >>>>>>>>>>>>>         Assert.assertTrue(cookies.isEmpty());
> >>>>>>>>>>>>>     }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>     @Test
> >>>>>>>>>>>>>     public void testCookieRejected() throws Exception {
> >>>>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>>>         response.addHeader(SM.SET_COOKIE2, "name=value;
> Domain=
> >>>>>>>>>>>>> www.somedomain.com; Version=1");
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpClientContext context =
> >>>>>> HttpClientContext.create();
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final List<Cookie> cookies =
> >>>> this.cookieStore.getCookies();
> >>>>>>>>>>>>>         Assert.assertNotNull(cookies);
> >>>>>>>>>>>>>         Assert.assertTrue(cookies.isEmpty());
> >>>>>>>>>>>>>     }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On Mon, Dec 14, 2015 at 9:34 PM, Oleg Kalnichevski <
> >>>>>> [email protected]
> >>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>> On Sun, 2015-12-13 at 22:28 +0100, Philippe Mouawad wrote:
> >>>>>>>>>>>>>>> Finally, for those  2 I am not sure  as per RFC6265, to use
> >>>> them
> >>>>>> ,
> >>>>>>>>>>>> put
> >>>>>>>>>>>>>> code
> >>>>>>>>>>>>>>> in
> >> org.apache.http.client.protocol.TestResponseProcessCookies.
> >>>>>>>>>>>>>>> They worked with HC3 but it does not mean they should work
> >> with
> >>>>>>>>>>>> HC4, but
> >>>>>>>>>>>>>> I
> >>>>>>>>>>>>>>> would like a confirmation:
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> I cannot get the tests to compile due to missing instance
> >>>>>> variables
> >>>>>>>>>>>>>> cookieOrigin, cookieSpec and cookieStore. I'll take another
> >> look
> >>>>>> if
> >>>>>>>>>>>> you
> >>>>>>>>>>>>>> post the complete class.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Oleg
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>     @Test
> >>>>>>>>>>>>>>>     public void testParseCookies() throws Exception {
> >>>>>>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "name1=value1");
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>         final HttpClientContext context =
> >>>>>>>>>>>> HttpClientContext.create();
> >>>>>>>>>>>>>>>
>  context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>>>>>
>  context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>         final List<Cookie> cookies =
> >>>>>> this.cookieStore.getCookies();
> >>>>>>>>>>>>>>>         List<Header> lstHdr =
> >>>> cookieSpec.formatCookies(cookies);
> >>>>>>>>>>>>>>>         StringBuilder sbHdr = new StringBuilder();
> >>>>>>>>>>>>>>>         for (Header header : lstHdr) {
> >>>>>>>>>>>>>>>             sbHdr.append(header.getValue());
> >>>>>>>>>>>>>>>         }
> >>>>>>>>>>>>>>>         org.junit.Assert.assertEquals("test1=1; test2=2",
> >>>>>>>>>>>>>> sbHdr.toString());
> >>>>>>>>>>>>>>>     }
> >>>>>>>>>>>>>>>     @Test
> >>>>>>>>>>>>>>>     public void testParseCookies2() throws Exception {
> >>>>>>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "test1=1;secure,
> >>>>>>>>>>>>>> test2=2;secure");
> >>>>>>>>>>>>>>>         final HttpClientContext context =
> >>>>>>>>>>>> HttpClientContext.create();
> >>>>>>>>>>>>>>>
>  context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>>>>>
>  context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>         final List<Cookie> cookies =
> >>>>>> this.cookieStore.getCookies();
> >>>>>>>>>>>>>>>         List<Header> lstHdr =
> >>>> cookieSpec.formatCookies(cookies);
> >>>>>>>>>>>>>>>         StringBuilder sbHdr = new StringBuilder();
> >>>>>>>>>>>>>>>         for (Header header : lstHdr) {
> >>>>>>>>>>>>>>>             sbHdr.append(header.getValue());
> >>>>>>>>>>>>>>>         }
> >>>>>>>>>>>>>>>         org.junit.Assert.assertEquals("test1=1; test2=2",
> >>>>>>>>>>>>>> sbHdr.toString());
> >>>>>>>>>>>>>>>     }
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Thanks
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> On Sun, Dec 13, 2015 at 10:09 PM, Philippe Mouawad <
> >>>>>>>>>>>>>>> [email protected]> wrote:
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Hi,
> >>>>>>>>>>>>>>>> Created
> >> https://issues.apache.org/jira/browse/HTTPCLIENT-1705
> >>>>>>>>>>>> with a
> >>>>>>>>>>>>>> Test
> >>>>>>>>>>>>>>>> case in it to show issue with Domain starting with ".".
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Regards
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> On Sun, Dec 13, 2015 at 9:50 PM, Philippe Mouawad <
> >>>>>>>>>>>>>>>> [email protected]> wrote:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Hi Oleg,
> >>>>>>>>>>>>>>>>> Created
> >>>> https://issues.apache.org/jira/browse/HTTPCLIENT-1705
> >>>>>>>>>>>> to show
> >>>>>>>>>>>>>>>>> issue with Cookie Header ordering.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Regards
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> On Sun, Dec 13, 2015 at 9:30 PM, Philippe Mouawad <
> >>>>>>>>>>>>>>>>> [email protected]> wrote:
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Hi,
> >>>>>>>>>>>>>>>>>>  I created
> >>>>>>>>>>>> https://issues.apache.org/jira/browse/HTTPCLIENT-1704
> >>>>>>>>>>>>>> with
> >>>>>>>>>>>>>>>>>> JUnit test case so that you understand the difference we
> >>>> have.
> >>>>>>>>>>>>>>>>>> Regards
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> On Sat, Dec 5, 2015 at 1:26 PM, Oleg Kalnichevski <
> >>>>>>>>>>>> [email protected]>
> >>>>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> On Fri, 2015-12-04 at 21:43 +0100, Philippe Mouawad
> >> wrote:
> >>>>>>>>>>>>>>>>>>>> Thanks Oleg.
> >>>>>>>>>>>>>>>>>>>> But look at
> >>>>>>>>>>>>>>>>>>>>
> >>
> https://github.com/ubikloadpack/jmeter/blob/HC4_5/test/src/org/apache/jmeter/protocol/http/control/TestCookieManager.java#L368
> >>>>>>>>>>>>>>>>>>> ,
> >>>>>>>>>>>>>>>>>>>> it concerns IGNORE_POLICY
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> I really think there is at least one bug.
> >>>>>>>>>>>>>>>>>>>> Regards
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> Sure thing. All these issues may well be due to bugs in
> >> HC.
> >>>>>>>>>>>> Could
> >>>>>>>>>>>>>> you
> >>>>>>>>>>>>>>>>>>> please though reproduce them with unit tests that do
> not
> >>>>>>>>>>>> involve
> >>>>>>>>>>>>>> JMeter
> >>>>>>>>>>>>>>>>>>> specific code?
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> Oleg
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> On Wed, Dec 2, 2015 at 4:00 PM, Oleg Kalnichevski <
> >>>>>>>>>>>>>> [email protected]>
> >>>>>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>>>> On Wed, 2015-12-02 at 15:51 +0100, Philippe Mouawad
> >>>> wrote:
> >>>>>>>>>>>>>>>>>>>>>> Hi Oleg,
> >>>>>>>>>>>>>>>>>>>>>> Thanks for answer.
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> Find my answers inline.
> >>>>>>>>>>>>>>>>>>>>>> Regards
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> On Wed, Dec 2, 2015 at 3:36 PM, Oleg Kalnichevski <
> >>>>>>>>>>>>>>>>>>> [email protected]>
> >>>>>>>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>>>>>> On Tue, 2015-12-01 at 22:09 +0100, Philippe Mouawad
> >>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>>>>>>> Hello,
> >>>>>>>>>>>>>>>>>>>>>>>> Any answer on this question ?
> >>>>>>>>>>>>>>>>>>>>>>>> Thanks
> >>>>>>>>>>>>>>>>>>>>>>>> Regards
> >>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>> On Sun, Nov 15, 2015 at 8:39 PM, Philippe Mouawad
> <
> >>>>>>>>>>>>>>>>>>>>>>>> [email protected]> wrote:
> >>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>> Hello,
> >>>>>>>>>>>>>>>>>>>>>>>>> We're in the process of migrating JMeter to last
> >>>>>>>>>>>>>> HttpClient
> >>>>>>>>>>>>>>>>>>> 4.5.1.
> >>>>>>>>>>>>>>>>>>>>>>>>> We are now migrating the CookieManager to remove
> >>>>>>>>>>>> all
> >>>>>>>>>>>>>>>>>>> deprecated
> >>>>>>>>>>>>>>>>>>>>> code.
> >>>>>>>>>>>>>>>>>>>>>>>>> To test this class, we had a JUNIT class :
> >>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>>
> >>
> https://github.com/ubikloadpack/jmeter/blob/HC4_5/test/src/org/apache/jmeter/protocol/http/control/TestCookieManager.java
> >>>>>>>>>>>>>>>>>>>>>>>>> Before migration, it was still testing HC3
> >>>>>>>>>>>> version.
> >>>>>>>>>>>>>>>>>>>>>>>>> So we first switched to HC4.23 and noticed some
> >>>>>>>>>>>>>> failures:
> >>>>>>>>>>>>>>>>>>>>>>> I am confused. Are you using HC 4.2.3 or HC 4.5.1?
> >>>>>>>>>>>>>>>>>>>>>> As I wrote, first we switched our JUnit tests to use
> >> HC4
> >>>>>>>>>>>>>>>>>>> Implementation
> >>>>>>>>>>>>>>>>>>>>> of
> >>>>>>>>>>>>>>>>>>>>>> CookieHandler and used 4.2.3, we got some failures
> >>>>>>>>>>>> compared to
> >>>>>>>>>>>>>>>>>>> HC3.
> >>>>>>>>>>>>>>>>>>>>>> Then we switched from HC 4.2.3 to HC 4.5.1 and got
> >> other
> >>>>>>>>>>>>>> failures
> >>>>>>>>>>>>>>>>>>> all
> >>>>>>>>>>>>>>>>>>>>>> detailed in initial mail.
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> What policy does
> >>>>>>>>>>>>>>>>>>>>>>> CookeManager use internally?
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> It depends on tests, you can see in the code that
> >>>>>>>>>>>> depending on
> >>>>>>>>>>>>>>>>>>> test
> >>>>>>>>>>>>>>>>>>>>> method
> >>>>>>>>>>>>>>>>>>>>>> we set different Policy to test them.
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> You ought to be using RFC6265 policy either in strict
> >> or
> >>>>>>>>>>>> relaxed
> >>>>>>>>>>>>>>>>>>> mode
> >>>>>>>>>>>>>>>>>>>>> and nothing else. All other policies have been marked
> >> as
> >>>>>>>>>>>>>> obsolete
> >>>>>>>>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>>>>>>> have already been removed in 5.0 (trunk).
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> Oleg
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>
> >> ---------------------------------------------------------------------
> >>>>>>>>>>>>>>>>>>>>> To unsubscribe, e-mail:
> >>>>>>>>>>>>>> [email protected]
> >>>>>>>>>>>>>>>>>>>>> For additional commands, e-mail:
> >>>>>>>>>>>>>>>>>>> [email protected]
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >> ---------------------------------------------------------------------
> >>>>>>>>>>>>>>>>>>> To unsubscribe, e-mail:
> >>>>>>>>>>>> [email protected]
> >>>>>>>>>>>>>>>>>>> For additional commands, e-mail:
> >>>>>>>>>>>>>> [email protected]
> >>>>>>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>>>>> Cordialement.
> >>>>>>>>>>>>>>>>>> Philippe Mouawad.
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>>>> Cordialement.
> >>>>>>>>>>>>>>>>> Philippe Mouawad.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>>> Cordialement.
> >>>>>>>>>>>>>>>> Philippe Mouawad.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>> --
> >>>>>>>>>>> Cordialement.
> >>>>>>>>>>> Philippe Mouawad.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>> --
> >>>>>>>>>> Cordialement.
> >>>>>>>>>> Philippe Mouawad.
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>
> >
>
>


-- 
Cordialement.
Philippe Mouawad.

Reply via email to