On Sat, Aug 22, 2015 at 11:00 AM, Nicolas George <geo...@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@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 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel