Unless an email, including its signature, is in violation of the mailing
list policies, no one is in a position to ask participants to format their
emails in a given way or not to include their email signatures. I suggest
reading https://www.apache.org/foundation/policies/conduct.html and
https://apache.org/dev/contrib-email-tips.html for those that are not
familiar with these policies.

Best regards,

{
  "blog" :
    "https://blog.behrang.org";,
  "twitter":
     "https://twitter.com/behrangsa";,
  "github":
     "https://github.com/behrangsa/";,
  "stackoverflow":
     "https://stackoverflow.com/users/309683?tab=profile"}



On Fri, Dec 13, 2019 at 2:08 AM Christopher Schultz <
ch...@christopherschultz.net> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
> Behrang,
>
> On 12/12/19 03:56, Behrang Saeedzadeh wrote:
> > Chris,
> >
> > 1) Does it make sense to call ServletRequest#getInputStream after
> > ServletRequest#getReader? No, and consequently it will throw
> > IllegalStateException. 2) Does it make sense to call
> > ServletRequest#getInputStream after ServletRequest#getPart/s? No,
> > but it returns an empty stream instead of throwing
> > IllegalStateException.
> >
> > These behaviours are not consistent.
>
> Perhaps, but they do not violate the specification.
>
> Tomcat must call getInputStream to parse the various
> multipart/form-data parts. If you call getInputStream, too, there will
> be no error.
>
> I suspect if you call getReader, you'll find you'll get an
> IllegalStateException.
>
> > Best regards,
> >
> > { "blog" : "https://blog.behrang.org";, "twitter":
> > "https://twitter.com/behrangsa";, "github":
> > "https://github.com/behrangsa/";, "stackoverflow":
> > "https://stackoverflow.com/users/309683?tab=profile"}
>
>
> Please stop advertising yourself on a public mailing list.
>
> - -chris
>
> > On Thu, Dec 12, 2019 at 4:31 AM Christopher Schultz <
> > ch...@christopherschultz.net> wrote:
> >
> > André,
> >
> > On 12/10/19 16:47, André Warnier (tomcat/perl) wrote:
> >>>> On 10.12.2019 15:31, Christopher Schultz wrote:
> >>>>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
> >>>>>
> >>>>> Behrang,
> >>>>>
> >>>>> On 12/8/19 05:18, Behrang Saeedzadeh wrote:
> >>>>>> If I call javax.servlet.ServletRequest#getInputStream
> >>>>>> after having called
> >>>>>> javax.servlet.http.HttpServletRequest#getPart, even
> >>>>>> without performing any operations on the given part, I
> >>>>>> am getting an empty stream (0-bytes).
> >>>>>>
> >>>>>> Is this in compliance with the spec?
> >>>>>
> >>>>> What does the servlet spec say about that situation?
> >>>>>
> >>>>
> >>>> A bit in defense of the OP, I have to say that the Servlet
> >>>> Spec (4.0 final) does not seem extremely clear on that
> >>>> subject.
> >
> > While I appreciate your research activities, I was hoping the OP
> > would actually read the spec to get some clarification.
> >
> >>>> In section "3.1.1 When Parameters Are Available", it /does/
> >>>> say this :
> >>>>
> >>>> "If the conditions are met, post form data will no longer be
> >>>> available for reading directly from the request object’s
> >>>> input stream."
> >>>>
> >>>> But among those conditions that have to be met (just above
> >>>> that quote) is "4. The servlet has made an initial call of
> >>>> any of the "getParameter family" of methods on the request
> >>>> object."
> >>>>
> >>>> (So there, it talks about "the getParameter family", not the
> >>>> "getPart" ones).
> >>>>
> >>>> It only talks about the "getPart" methods in the next section
> >>>> "3.2 File upload", and in that section, all it says about the
> >>>> input stream is : "If the servlet container does not provide
> >>>> the multi-part/form-data processing, the data will be
> >>>> available through the HttpServletReuqest.getInputStream."
> >>>>
> >>>> So the way I read this, is that there is nothing that
> >>>> explicitly says that the InputStream is no longer available
> >>>> if you have called "getPart".
> >
> > The only reason the container would process multi-part/form-data
> > requests is if you called request.getPart*. Therefore, the
> > InputStream is no longer available.
> >
> >>>> (It is also in fact not very clear about what happens to the
> >>>> parameters, when the content-type of the Request is
> >>>> "multipart/form-data", which is only mentioned in section
> >>>> 3.2.)
> >
> > Normal parameters are available via request.getParameter*. You can
> > also go through the agony of getPart("foo").getInputStream() if
> > you'd like. This is documented in section 3.2 "File Upload".
> >
> >>>> On the other hand,
> >>>> http://tomcat.apache.org/tomcat-9.0-doc/servletapi/index.html
> >>>> --> Interface HttpServletRequest says :
> >>>>
> >>>> Part getPart(java.lang.String name) throws
> >>>> java.io.IOException, ServletException Gets the named Part or
> >>>> null if the Part does not exist. *Triggers upload of all
> >>>> Parts*. (emphasis mine)
> >>>>
> >>>> which /may/ be taken to mean (and probably does) that it
> >>>> consumes the whole InputStream.
> >
> > It does. And, necessarily, it must. You can't find out what's in
> > the request entity without ... reading the request entity.
> >
> >>>> But again, this may be lacking some overall clarity.
> >>>>
> >>>> In any case, the OP's question is not really unwarranted,
> >>>> unless there is some other explanation somewhere which I have
> >>>> missed.
> >
> > I guess to me this falls under the category of "obvious", but then
> > again I know quite a bit about this subject.
> >
> > -chris
> >>
> >> ---------------------------------------------------------------------
> >>
> >>
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> >> For additional commands, e-mail: users-h...@tomcat.apache.org
> >>
> >>
> >
> -----BEGIN PGP SIGNATURE-----
> Comment: Using GnuPG with Thunderbird - https://www.enigmail.net/
>
> iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAl3yV8AACgkQHPApP6U8
> pFh11hAAvJ4wdKJLUW89Xgk0oJa7HtaqVuFkDTSwPZ0NfRSs372eQO6N503d3vjp
> SPlros1irLmmtFnDWN4b3/t/oJRirdExbiEjPP8hiRynGm7V3RT+naVmvm5ksyL8
> RbEXbiD1Gu0/UcrR+uSr1Omxa9rxb18uyBDrUw/WmXZVu0k/geRabyrAXvTKIJaa
> MMXrK8sxAG5Yk6dXu3Lm1qgx1d8vo1oeoGfbAxCGiaQ0EwOHLpn2PTce/39s9EmI
> +8MhIDfEy8O1ZSSoLnInSxka6zgP6n3yk7onGIgzIkE4YwZTXOPKh/s4GZNXg2ly
> 5/600W3AuOT4ymDNdvw9Hx64PnfElo85WgL2iPSi1NfPmKjNxJKFDKB//W5GAGgk
> us51bWkFf4wRaUSTHBKty0xipEoy8EJA/P2TWm8JWNcHXF+CDuPq54ygK6iYT2XL
> RTSRflC5EiUA1NfAIhVgwFjN3L/aUMrRaAzEqFQKK1Z/7z3W5Ql4dRAgdq75QAE+
> XpYynPEHfWABR7VwbmplVXMsjGfvqc5Ry6AK3gwdsERryrZBezdLZHnojLcxMDaQ
> 3refYsMGM3h79O4zd30quGJx72nW6/DsotfYLsGHw6iZMvzdhNPOiLZu44LoIS3D
> juhbDbJNAothwwNCnAV0GSueqcMPo8N4bYYA4yL3x7WgKLuRLAU=
> =RHsI
> -----END PGP SIGNATURE-----
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>

Reply via email to