nginx-1.21.3とngx_ajp_moduleでコンパイルエラー

nginx-1.21.3とngx_ajp_moduleでコンパイルエラー

最近サボっていたnginxのバージョンアップ。
以前のバージョンと同じようにconfigureしてmakeするとこんなエラー。

../nginx_ajp_module/ngx_http_ajp.c: 関数 ‘sc_for_req_get_uri’ 内:
../nginx_ajp_module/ngx_http_ajp.c:139:27: エラー: ‘ngx_http_request_t’ は ‘space_in_uri’ という名前のメンバを持っていません
     if (r->quoted_uri || r->space_in_uri || r->internal) {
 ||<

space_in_uriってメンバがないと。
構造体ngx_http_request_tがどこで定義されているかを調べると、/src/http/ngx_http_request.hにあります。
該当するメンバの周辺は、nginxの1.18.0だとこんな感じ。

>||
  /* URI with "%" */
    unsigned                          quoted_uri:1;

    /* URI with "+" */
    unsigned                          plus_in_uri:1;

    /* URI with " " */
    unsigned                          space_in_uri:1;

    unsigned                          invalid_header:1;

1.18.0と1.21.3と同じファイルでdiffをとってみる。
結果こんなの。

<     unsigned                          filter_need_buffering:1;
<     unsigned                          last_sent:1;
<     unsigned                          last_saved:1;
474,475c470,471
<     /* URI with empty path */
<     unsigned                          empty_path_in_uri:1;
---
>     /* URI with " " */
>     unsigned                          space_in_uri:1;

他にも追加されたものあるみたいですが、いまでている現象については名前が代わっただけみたいです。
ってことでngx_ajp_moduleのソースを修正する。エラーにちゃんと行数まで書いてありますね。
nginx_ajp_module/ngx_http_ajp.cの139行目。

修正後のソースはこんな。

    if (r->quoted_uri || r->empty_path_in_uri || r->internal) {
        escape = 2 * ngx_escape_uri(NULL, r->uri.data,
                r->uri.len, NGX_ESCAPE_URI);
    }