threads / discuss / 39114

What happen if show_http_message fails to reencode?

Subject: What happen if show_http_message fails to reencode?

## tl;dr

2 messages between Apr 20, 2015 and Apr 20, 2015.

replies: 1people: 2as markdown or json

Yi, EungJun· Apr 20, 2015, 06:29 UTC · lore

I'm trying to make my git server sends http messages in non-ASCII encoding. And I have a question.

At 206-218 in remote-curl.c:
Show 13 quoted lines
> static int show_http_message(struct strbuf *type, struct strbuf *charset,
>                  struct strbuf *msg)
> {
>     const char *p, *eol;
>
>     /*
>      * We only show text/plain parts, as other types are likely
>      * to be ugly to look at on the user's terminal.
>      */
>     if (strcmp(type->buf, "text/plain"))
>         return -1;
>     if (charset->len)
>         strbuf_reencode(msg, charset->buf, get_log_output_encoding());

What happen if the message has a character which cannot be encoded by the encoding defined by i18n.logoutputencoding? Drops only the character or brakes the whole message?

-EungJun
Junio C Hamano· Apr 20, 2015, 16:46 UTC · re: Yi, EungJun · lore

Re: What happen if show_http_message fails to reencode?

"Yi, EungJun" <semtlenori@gmail.com> writes:
Show 22 quoted lines
> I'm trying to make my git server sends http messages in non-ASCII
> encoding. And I have a question.
>
> At 206-218 in remote-curl.c:
>
>> static int show_http_message(struct strbuf *type, struct strbuf *charset,
>>                  struct strbuf *msg)
>> {
>>     const char *p, *eol;
>>
>>     /*
>>      * We only show text/plain parts, as other types are likely
>>      * to be ugly to look at on the user's terminal.
>>      */
>>     if (strcmp(type->buf, "text/plain"))
>>         return -1;
>>     if (charset->len)
>>         strbuf_reencode(msg, charset->buf, get_log_output_encoding());
>
> What happen if the message has a character which cannot be encoded by
> the encoding defined by i18n.logoutputencoding? Drops only the
> character or brakes the whole message?

I think the implementation of strbuf_reencode() should tell you quickly, but otherwise it may warrant a sentence or two of commenting there. It leaves the msg intact when underlying iconv() reports that it couldn't reencode, so you should get the original message literally.

← back to recent threads