Thrift
  1. Thrift
  2. THRIFT-1159

THttpClient->Flush() issue (connection thru proxy)

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.9
    • Component/s: C# - Library
    • Labels:
    • Environment:

      w2k sp4, .net2

    • Patch Info:
      Patch Available

      Description

      1) Issue with timeout at the moment of call THttpClient->Flush() when I try to get data thru proxy.
      Prerequestites: clent(c# thrift) before proxy, we resource (in my case http://google.com)
      Code:

       
      class Program {
         static void Main(string[] args) {
      	Uri uri = new Uri("http://google.com");
      	TTransport transport = new THttpClient(uri);
        	transport.Flush();
         }
      }
      

      At the moment of call the method transport.Flush(); just goes to sleep forever (in my app).
      Issue is locates in the: file Transport/THttpClient.cs -> method CreateRequest()
      code:

       
      connection.Proxy = null;
      

      The lib should set state of proxy using some methods like to:
      use default proxy - property WebRequest.DefaultWebProxy from namespace System.Net
      add new property or methods with Proxy object
      probably use a method of declaring an attribute in C# - to write own custom attribute(s) for class THttpClient; it's be able manage state of object inside without usage of some xml config files

      2) Timeout period is not set by default.
      Actually timeout period set to 0
      Code (file Transport/THttpClient.cs):

      private int connectTimeout = 0;
      private int readTimeout = 0;
      

      Need to set value of timeout by default like 15 seconds instead of infinite interval.

      3) HttpWebRequest connection properties sets by default
      Code (file Transport/THttpClient.cs -> method CreateRequest()):

      connection.ContentType = "application/x-thrift";
      connection.Accept = "application/x-thrift";
      connection.UserAgent = "C#/THttpClient";
      connection.Method = "POST";
      connection.ProtocolVersion = HttpVersion.Version10;
      

      But need to have a way to configure it options thru object or class attributes in client code

        Issue Links

          Activity

          Hide
          alex_gs added a comment -

          Extensions/ pathes for THttpClient.cs:

          • the property (setter) Proxy for configuring proxy in client code
            Sample:
            Uri uri = new Uri("http://localhost:3968/TimeServerSample/post.ashx");
            THttpClient transport = new THttpClient(uri);
            transport.Proxy = WebRequest.DefaultWebProxy;
            
          • timeouts is set like 30 seconds (for connect and read time)
          • inside private method CreateRequest() I've added to object connection (of type HttpWebRequest)
            couple of properties (value as false) - Expect100Continue & UseNagleAlgorithm. It's allow to extend
            perfomance regarding old version (basically) twice
          Show
          alex_gs added a comment - Extensions/ pathes for THttpClient.cs: the property (setter) Proxy for configuring proxy in client code Sample: Uri uri = new Uri( "http: //localhost:3968/TimeServerSample/post.ashx" ); THttpClient transport = new THttpClient(uri); transport.Proxy = WebRequest.DefaultWebProxy; timeouts is set like 30 seconds (for connect and read time) inside private method CreateRequest() I've added to object connection (of type HttpWebRequest) couple of properties (value as false) - Expect100Continue & UseNagleAlgorithm . It's allow to extend perfomance regarding old version (basically) twice
          Hide
          alex_gs added a comment -

          Fixed version of THttpClient.cs above in attachment

          Show
          alex_gs added a comment - Fixed version of THttpClient.cs above in attachment
          Hide
          Joshua Samuel added a comment -

          How do we get this patch integrated into the main source? It appears to have been sitting here is a patch for 1 year.
          This patch fixes my issue in trying to use the API behind a corporate firewall/Web Proxy.

          Show
          Joshua Samuel added a comment - How do we get this patch integrated into the main source? It appears to have been sitting here is a patch for 1 year. This patch fixes my issue in trying to use the API behind a corporate firewall/Web Proxy.
          Hide
          Jake Farrell added a comment -

          Joshua, can you submit a patch against current trunk for this rather than the actual file (http://thrift.apache.org/docs/HowToContribute/)

          Show
          Jake Farrell added a comment - Joshua, can you submit a patch against current trunk for this rather than the actual file ( http://thrift.apache.org/docs/HowToContribute/ )
          Hide
          alex_gs added a comment -

          Also please check a https://issues.apache.org/jira/browse/THRIFT-1162 issue and fix inside. By the way, why issues/fixes not check so long time? I have a really bunch of bugs and fixes with thrift but did not want commit it here because thought the project "in decline".

          Show
          alex_gs added a comment - Also please check a https://issues.apache.org/jira/browse/THRIFT-1162 issue and fix inside. By the way, why issues/fixes not check so long time? I have a really bunch of bugs and fixes with thrift but did not want commit it here because thought the project "in decline".
          Hide
          Jake Farrell added a comment -

          Alex, I can assure you that Thrift is active and I have been creating releases around every 3-4 months (0.9rc coming shortly). Since the beginning of the this year we have added 2 new libraries, updated the website, resolved ~100 tickets and taken care of some Apache internal house keeping.

          Please attach patches to the tickets with asf inclusion rather than whole files like in this ticket and in Thrift-1162. See http://thrift.apache.org/docs/HowToContribute/

          Show
          Jake Farrell added a comment - Alex, I can assure you that Thrift is active and I have been creating releases around every 3-4 months (0.9rc coming shortly). Since the beginning of the this year we have added 2 new libraries, updated the website, resolved ~100 tickets and taken care of some Apache internal house keeping. Please attach patches to the tickets with asf inclusion rather than whole files like in this ticket and in Thrift-1162. See http://thrift.apache.org/docs/HowToContribute/
          Hide
          Joshua Samuel added a comment -

          Patch based on alex_gs's THttpClient.cs + default to system/config file default proxy, rather than NULL to allow app config file to set the proxy correctly.

          Show
          Joshua Samuel added a comment - Patch based on alex_gs's THttpClient.cs + default to system/config file default proxy, rather than NULL to allow app config file to set the proxy correctly.
          Hide
          Jake Farrell added a comment -

          Thanks for rebase, committed

          Show
          Jake Farrell added a comment - Thanks for rebase, committed
          Hide
          Hudson added a comment -

          Integrated in Thrift #472 (See https://builds.apache.org/job/Thrift/472/)
          THRIFT-1159:THttpClient->Flush() issue (connection thru proxy)
          Client: csharp
          Patch: Joshua Samuel + Alex Gaas

          Resolve HttpClient flush issues with proxy. (Revision 1339934)

          Result = ABORTED
          jfarrell : http://svn.apache.org/viewvc/?view=rev&rev=1339934
          Files :

          • /thrift/trunk/lib/csharp/src/Transport/THttpClient.cs
          Show
          Hudson added a comment - Integrated in Thrift #472 (See https://builds.apache.org/job/Thrift/472/ ) THRIFT-1159 :THttpClient->Flush() issue (connection thru proxy) Client: csharp Patch: Joshua Samuel + Alex Gaas Resolve HttpClient flush issues with proxy. (Revision 1339934) Result = ABORTED jfarrell : http://svn.apache.org/viewvc/?view=rev&rev=1339934 Files : /thrift/trunk/lib/csharp/src/Transport/THttpClient.cs

            People

            • Assignee:
              Unassigned
              Reporter:
              alex_gs
            • Votes:
              1 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - 12h
                12h
                Remaining:
                Remaining Estimate - 12h
                12h
                Logged:
                Time Spent - Not Specified
                Not Specified

                  Development