[FFmpeg-devel] [PATCH] lavf/http: Export headers as AVDictionary
Stephan Holljes
klaxa1337 at googlemail.com
Sat Aug 22 17:10:28 CEST 2015
On Sat, Aug 22, 2015 at 11:00 AM, Nicolas George <george at nsup.org> wrote:
> Le tridi 3 fructidor, an CCXXIII, Stephan Holljes a écrit :
>> Actually I just noticed that Pragma-headers may appear multiple times.
>> What would be a good way to handle that? I thought about expanding the
>> header tag from "Pragma" to "Pragma-%02d" with either an incrementing
>> number or just using s->nb_headers. Is there a better solution?
>
> Well, this is annoying, I had hoped we could disregard duplicated headers as
> a badly-formed request warranting sending nasal demons to the client.
>
> Suffixing a number would be very impractical for the application, and would
> cause strange behaviours if the client were to send a header with a number.
>
> Another option would be to allow duplicated key entries in AVDictionary, but
> that would require specifying the order of the entries.
>
> Fortunately, the RFC saves us here:
>
> Multiple message-header fields with the same field-name MAY be
> present in a message if and only if the entire field-value for that
> header field is defined as a comma-separated list [i.e., #(values)].
> It MUST be possible to combine the multiple header fields into one
> "field-name: field-value" pair, without changing the semantics of the
> message, by appending each subsequent field-value to the first, each
> separated by a comma.
>
> Therefore, when dealing with any header already present in the dictionary:
> append a comma and the new value to it.
>
> Note that FFserver's behaviour with regard to duplicated Pragma entries is
> currently broken:
>
> if (av_strncasecmp(p, "Pragma: log-line=", 17) == 0) {
> logline = p;
> break;
> }
> if (av_strncasecmp(p, "Pragma: client-id=", 18) == 0)
> client_id = strtol(p + 18, 0, 10);
>
> That code recognizes:
>
> Pragma: log-line=foobar
> Pragma: client-id=bazqux
>
> but not:
>
> Pragma: log-line=foobar,client-id=bazqux
>
> Hopefully, fixing it would be a side effect of using the new HTTP server
> API.
>
> Regards,
>
> --
> Nicolas George
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
I implemented putting all multiple headers into a comma-separated
list. Updated patch will come as a reply to this email.
I pushed an updated version of FFServer to my repo. I tested it
against a custom HTTP request with multiple Pragma-headers and it
parsed them correctly.
Regards,
Stephan
More information about the ffmpeg-devel
mailing list