On 05/19/16 10:39, Gary Lin wrote: > Cc Samer and Nagaraj. > I saw them with "git sent-email --dry-run". Wonder how they were dropped.
They were not dropped. The list software is trying to be smart. Namely, if you go to <https://lists.01.org/mailman/listinfo/edk2-devel>, and click "Unsubscribe or edit options", you can toggle a number of mailing list options for your subscriptions. One of these options is: Avoid duplicate copies of messages? This affects how the list software reflects an email to you that you were also directly addressed on. Some people (including me) like to receive duplicate copies. Meaning, if you CC me on a patch that you send to the list, I will get a direct copy from you (due to the CC), plus the list software will send me another copy (*because* I have enabled duplicate copies). I like to see one instance of your patch in my INBOX, and another one in my edk2-devel folder (which is supposed to be a complete archive). However, others don't like to receive duplicates. They prefer the list software not to send them a reflected message, if they are also on the CC list directly. When the list software is deciding about reflecting a message to subscriber X, and subscriber X has disabled duplicates, and subscriber X is also on the CC list of the message that the list software received from the submitter, then the list software assumes subscriber X has the message anyway (directly from the submitter), and will not reflect the message to subscriber X. *But*, to actually answer your question, in this latter case something else happens to. Namely, subscriber X is *also* removed from the CC list of the message that the list software sends out to any other subscribers. I guess the idea is, "subscriber X likes to receive exactly one copy of each message on the list; so he got one copy of the thread starter directly from the submitter, and he will get one copy of each followup message too, sent by others, reflected by the list software". If the CC were preserved in the reflected thread starter, then followup messages would arrive to subscriber X both directly and reflected by the list. For the submitter, this CC munging is incredibly confusing and annoying. But, if you know about the above, it is more tolerable. As a side effect, you can now deduce that Samer and Nagaraj have *not* enabled duplicate copies in their options. :) HTH Laszlo > On Thu, May 19, 2016 at 11:49:17AM +0800, Gary Lin wrote: >> The HTTP Token Wrap is created in EfiHttpResponse() and then passed >> to the deferred Receive event callback, HttpTcpReceiveNotifyDpc. >> HttpTcpReceiveHeader and HttpTcpReceiveBody use a Tcp polling loop to >> monitor the socket status and trigger the Receive event when a new >> packet arrives. The Receive event brings up HttpTcpReceiveNotifyDpc >> to process the HTTP message and the function will set Wrap->TcpWrap.IsRxDone >> to TRUE to break the Tcp polling loop. >> >> However, HttpTcpReceiveNotifyDpc mistakenly freed Wrap, so the Tcp >> polling loop was actually checking a dead variable, and this led the >> system into an unstable status. >> >> Given the fact that the HTTP Token Wrap will be freed in EfiHttpResponse >> or HttpResponseWorker, this commit removes every "FreePool (Wrap)" in >> HttpTcpReceiveNotifyDpc. >> >> Cc: "Wu, Jiaxin" <jiaxin...@intel.com> >> Cc: "Siyuan Fu" <siyuan...@intel.com> >> Cc: "El-Haj-Mahmoud, Samer" <samer.el-haj-mahm...@hpe.com> >> Cc: "Laszlo Ersek" <ler...@redhat.com> >> Cc: "Hegde, Nagaraj P" <nagaraj-p.he...@hpe.com> >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Gary Lin <g...@suse.com> >> --- >> NetworkPkg/HttpDxe/HttpProto.c | 4 ---- >> 1 file changed, 4 deletions(-) >> >> diff --git a/NetworkPkg/HttpDxe/HttpProto.c b/NetworkPkg/HttpDxe/HttpProto.c >> index f3992ed..afa7fe4 100644 >> --- a/NetworkPkg/HttpDxe/HttpProto.c >> +++ b/NetworkPkg/HttpDxe/HttpProto.c >> @@ -152,7 +152,6 @@ HttpTcpReceiveNotifyDpc ( >> if (EFI_ERROR (Wrap->TcpWrap.Rx6Token.CompletionToken.Status)) { >> Wrap->HttpToken->Status = >> Wrap->TcpWrap.Rx6Token.CompletionToken.Status; >> gBS->SignalEvent (Wrap->HttpToken->Event); >> - FreePool (Wrap); >> return ; >> } >> >> @@ -162,7 +161,6 @@ HttpTcpReceiveNotifyDpc ( >> if (EFI_ERROR (Wrap->TcpWrap.Rx4Token.CompletionToken.Status)) { >> Wrap->HttpToken->Status = >> Wrap->TcpWrap.Rx4Token.CompletionToken.Status; >> gBS->SignalEvent (Wrap->HttpToken->Event); >> - FreePool (Wrap); >> return ; >> } >> } >> @@ -234,8 +232,6 @@ HttpTcpReceiveNotifyDpc ( >> // Check pending RxTokens and receive the HTTP message. >> // >> NetMapIterate (&Wrap->HttpInstance->RxTokens, HttpTcpReceive, NULL); >> - >> - FreePool (Wrap); >> } >> >> /** >> -- >> 2.8.2 >> >> _______________________________________________ >> edk2-devel mailing list >> edk2-devel@lists.01.org >> https://lists.01.org/mailman/listinfo/edk2-devel >> _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel