[erlang-questions] inets/httpc bad match issue for 2 post requests

Shawn Debnath shawn@REDACTED
Thu Jan 15 21:00:41 CET 2015


Interesting finding, after adding some debug printing to print out headers, now I can’t repro the issue:


  64

  65 %% Invoke REST API calls via same inets/httpc processes

  66 same_inets_for_calls_test() ->

  67

  68     inets:start(),

  69

  70     BeginUrl = ?API_BASE ++ "begin_media_post",

  71     BeginH1 = [{"x-pryvy-authorization-status","Unknown"}],

  72     BeginHeaders = [{"x-pryvy-authorized-userid","100"} | BeginH1],

  73     {ok, {{_, BeginStatus, BeginResponseReason}, BeginResponseHeaders,

  74           BeginResponseBody}} =

  75         httpc:request(post, {BeginUrl, BeginHeaders, ?CONTENT_TYPE_JSON,

  76             ?SAMPLE_JSON_CONTENT}, [], []),

  77     io:format(standard_io, "resason: ~p~n headers: ~p~n body: ~p~n",

  78               [BeginResponseReason, BeginResponseHeaders, BeginResponseBody]),

  79     ?assertEqual(?HTTP_UNAUTH, BeginStatus),

  80

  81     EndUrl = ?API_BASE ++ "end_media_post",

  82     EndH1 = [{"x-pryvy-authorization-status","Unknown"}],

  83     EndHeaders = [{"x-pryvy-authorized-userid","100"} | EndH1],

  84     {ok, {{_, EndStatus, EndResponseReason}, EndResponseHeaders,

  85           EndResponseBody}} =

  86         httpc:request(post, {EndUrl, EndHeaders, ?CONTENT_TYPE_JSON,

  87             ?SAMPLE_JSON_CONTENT}, [], []),

  88     io:format(standard_io, "resason: ~p~n headers: ~p~n body: ~p~n",

  89               [EndResponseReason, EndResponseHeaders, EndResponseBody]),

  90     ?assertEqual(?HTTP_UNAUTH, EndStatus),

  91

  92     inets:stop().

Smells like the inets/httpc timing issue?

Thanks,
Shawn

From: Shawn Debnath
Date: Thursday, January 15, 2015 at 11:49 AM
To: Erlang Questions
Subject: [erlang-questions] inets/httpc bad match issue for 2 post requests

Hi there,

Wondering if anyone can shed some light on this issue I am seeing.

I am trying to understand what may be causing **error:{badmatch,{error,socket_closed_remotely}} when using the same inets process to do 2 POST/PUT requests. The same code works just fine when issuing the same rest API calls to two separate inets processes or when issuing 2 GET requests to the same inets process.

Using webmachine on the server side which is not reporting any errors, and looking at the WMTRACEs, it correctly returns HTTP 401 error, which is expected.

Test source and output can be found at: http://pastebin.com/9DFzxLps

Thanks,
Shawn

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20150115/5fbf5b80/attachment.htm>


More information about the erlang-questions mailing list