改版履歴

Cente HTTPd/c

HTTPd修正

HTTPd内部での通信シーケンスを一新し、エラーフローが一箇所で行えるようになるように修正

Chunkエンコーディング機能を実装

POSTされたデータを保存する箇所をカスタマイズ化(httpd_save_post_data関数)

Digest認証で、nonce値をサーバで保存し、指定された時間間隔で更新するように修正

クライアントから複数行にまたがるヘッダを送られたときに解析できなかったバグを修正

MPF領域を使用禁止にしたT_INHEADERおよびT_OUTHEADER構造体は、文字列の実体をその構造体の中に持つようにした。

T_HTTPD_INTERNAL_INFO構造体を追加。T_INHEADERでもT_OUTHEADERでもない、HTTPd内部で使用する変数を、この構造体内にまとめた。

HTTPdでタスクごとに使用する構造体をT_HTTPD_SESSION構造体にまとめ、static領域で実体を宣言するようにした。

Cookieヘッダのパースにバグがあったのを修正。パース後のCookie情報を、各Cookieごとの情報と複数のCookie全体に対する情報とに区別した。

HTTPc修正

T_HTTPC_RSPHEADER構造体に、メンバbody_file_pathを追加。受信したボディ部のファイルシステムへの保存を実装した。

body用に用意したバッファのサイズが0のときも、HTTP通信を可能にした。

body用に用意したバッファが不足した場合も、すべてのボディ部を受信してからHTTPのコネクションを切るように修正。

Cente HTTPd/c

HTTPd修正

HEADメソッドでは認証が通らないバグを修正

POSTメソッドでは認証が行われないバグを修正

qop値のパースの際にブラウザをチェックしてそれぞれの動作に合わせて処理を行っていたが、IE・NetScape以外のブラウザではパースできないケースがあった。ブラウザに関わらずqop値をパースで切るように修正。

http認証でclient_urlの格納バッファをHTTPD_LONGSTR_MAXで取るように修正

http認証で、URIがバッファに格納できない場合に414を返すように修正

OPTIONメソッドの処理シーケンスを追加

httpd_request関数呼出し後にエラーした後にメモリを開放し忘れていたので、修正

HTTPc修正

T_HTTPC_REQHEADER構造体に、メンバipifを追加。IPIFを指定しての通信を可能とした。

Cente HTTPd/c

HTTPcで、SSLサーバーの認証をしないための方法を追加

T_HTTPC_REQHEADERのverify_peerを0にする事で、安全ではないサイトへ強制的に接続する事も可能にした。

HTTPd修正

拡張子判定の際に、拡張子が見つからない場合に不正アクセスしてしまう件を修正。

HTTPdのメモリプール領域が4の倍数ではない件を修正。

http_requ_header_analysis()で、strncasecmp(a,b,sizeof("文字列"))のバグを修正。

httpd_util_itoa()で、sizeofの使い方がおかしい件を修正。

httpd_util_get_string_by_key関数で、不正なデータ長チェックを削除。

httpd_util_get_string_by_key関数で、URLデコード後に不正な領域にを書き込んでいるバグを修正。

httpd_util_url_decode関数で、バッファ長によるループ終了条件が不正だったのを修正。

httpd_resp_send_error関数で、エラーHTMLに記述ミスがあったのを修正。

HTTPc修正

http_communication関数の返すエラー値が誤っているバグを修正。

httpd_util_get_string_by_key関数で、URLデコード後に不正な領域にを書き込んでいるバグを修正。

httpd_util_url_decode関数で、バッファ長によるループ終了条件が不正だったのを修正。

Cente HTTPd/c

HTTPd修正

SSL有り・無しのタスクの共存を実装

httpd_get_auth_data関数に引数sockIDを追加

httpd_is_ssl_session関数を追加

httpd_get_https_port関数を追加

httpd_init_http_port関数を廃止

HTTPSD_MAXSESSIONマクロを追加

HTTPD_USE_SSLマクロを廃止

CGI関数にてT_OUTHEADERのメンバcontent_lenに値をセットした場合は、HTTP1.1でもChunkエンコーディングせずにContent-Lengthヘッダを付加するようにした。

Cente HTTPd/c

HTTPcのSSL対応

HTTPcのSSL対応。

※CRL(失効証明書)対応コードが入っているので、CenteSSLはCRLに対応したバージョン1.13以上をお使い下さい。

HTTPc修正

ヘッダ解析時に、解析用バッファが満杯になったときの処理に誤りがあったのを修正。

実際にボディとして読み込んだサイズをヘッダに格納するようにした。

ボディ読み込み時に、ユーザの用意したボディバッファが不足したことを示すフラグを追加。

ボディ受信後のエラーチェック関数(ローカル)を追加。

ヘッダとボディの境界を示す「CRLFCRLF」の途中でパケットが途切れた場合の処理を追加。

ボディ読み込み時に、読み込んだサイズの総計を計上するところに誤りがあったのを修正。

httpc_getでhttpc_create_socket_buffer()が失敗した時の処理でE_OKを返していたのを修正。

httpc_communicationで、connectに失敗した時にOKをreturnしているのを修正。

httpc_getでhttpc_create_socket_buffer()が失敗した時の処理でE_OKを返していたのを修正。

HTTPd修正

デフォルトディレクトリに不要な文字「:」が含まれていたのを消去。

クライアントからの絶対URL表記に対応。

HTTPdで、ファイルをマルチパートでPOSTされたときに、HTMLファイルで「name=」で指定した。名前でテンポラリファイルを作成するように修正。それに伴い、httpd_get_posted_file関数の仕様変更。内部関数 httpd_util_make_posted_tmp_file_name関数の仕様変更。

サンプルページ

HTMLをCのソースにした配列の型を修正(const装飾子を付加)。

CGI動作後のリンクを、相対URLで表記するように修正。

不要なコメント分を削除。

GET、POST(シングルパート)、POST(マルチパート)のCGIが1つのCGIだったのを、それぞれ別のCGIに分岐。

Cente HTTPd/c

Cente共通モジュールバージョンアップ

Cente共通モジュールのバージョンアップ。

HTTPd/cデバッグログ

cthttpc.hのctlog.hのインクルード記述をデバッグマクロの中に移動。

cthttpd_sys.hのctlog.hのインクルード記述をデバッグマクロの中に移動。

HTTPd/c共通ルーチン(cthttp_common.c)

HTTPプロトコル名取得関数に誤りがあったのを修正。

HTTPcレスポンス解析ルーチン(cthttpc.c)

cthttpc.cで、get処理を行う際にバッファぎりぎりまでデータを読み込むように修正。

Cente HTTPd/c

ユーザカスタマイズヘッダのデフォルト値(cthttpd_cfg.h)

固定長メモリバッファ

大のサイズ   511→1024

小のサイズ   40→64

大のブロック数 10→20

小のブロック数 5→40

tcp送受信タイムアウト

10秒 → 30秒

POST最大受信バイト数

60000→60*1024

HTTPヘッダの一行の最大サイズ

512→1024

SSIタグの文字列最大長

30→40

HTTPdユーザカスタマイズ関数(cthttpd_param.c)

httpd_get_fullpath、httpd_get_urlの廃止。

httpd_do_after_auth追加。

httpd_do_after_request追加。

httpd_do_after_responce追加。

httpd_get_auth_data仕様変更。

HTTPd環境依存関数(cthttpd_res.c)

タスクを生成する際にスタティックバッファを使用するように変更。

HTTPd認証ルーチン(cthttpd_auth.c)

認証パラメータ受け渡し方法を修正(cthttpd_param.cのhttpd_get_auth_dataの仕様変更に伴う)。

※同じURLに対する、異なる認証方法の混在は不可。

DIGEST認証定義がされていない場合には、DIGESTできた認証は全て通すように修正。

Basic認証で、保護領域名が固定だったのを、httpd_get_auth_dataで取得した認証構造体のrealmを参照するように修正。

httpd_get_auth_data関数で0以外を返したとき、NotFoundを送信するように修正。

HTTPdメインタスクルーチン(cthttpd_main.c)

httpd_init_http_port関数を追加。

httpd_get_http_port関数を追加。

httpd_get_client_ip関数を追加。

KeepAliveのタイムアウトのデバッグログレベルの変更。

アクセスのたびにCepの作成/削除を繰り返していたのをやめ、作成は1回のみ行うように修正。

HTTPdリクエスト処理ルーチン(cthttpd_requ.c)

httpd_request関数の戻り値を、タイムアウトなどの形式に応じて変更。

HTTPdレスポンス処理ルーチン(cthttpd_resp.c)

httpd_get_rootdir関数廃止に伴う変更。

ディレクトリ作成失敗時のエラーログレベルの変更。

HTTPdユーティリティルーチン(cthttpd_util.c)

httpd_get_query_data関数のバグを修正。

HTTPdヘッダ(cthttpd.h)

httpd_get_fullpath、httpd_get_url、httpd_get_http_current_dirの宣言削除。

新規追加関数の宣言追加。

HTTPdSSIルーチン(cthttpd_ssi.c)

httpd_send_with_htmlcode関数の追加。

HTTPd/c共通ルーチン(cthttp_common.c)

URLエンコード処理で、半角スペースを「+」に変換する処理を追加(HTTPcで使用)。

Page 2 of 2