Cente PPP
ctkernelに対応
他OSへの移植性向上のため、iTRON4のAPI名と構造体名にプリフィックスを追加した。
ctkernelに対応
他OSへの移植性向上のため、iTRON4のAPI名と構造体名にプリフィックスを追加した。
1tick=1msec環境で、PPPパケットの再送が5秒おきに発生する。
1tick=10msecを前提とした部分があり、0.5秒おきに発生する再送が、1tick=1msec環境では5秒おきに発生していたので修正した。
MPPEで、パケット到着順が逆になるとそれ以降の通信ができなくなる。
特にインターネット環境では、ときどきパケットの到着順が前後することがある。MPPE通信のシーケンス番号が0に戻るときに到着順が前後すると、それ以降の通信ができなくなっていたので対応した。
PPP接続完了直後にIPパケットを受信できない。
PPPネゴシエーションが完了した直後に回線側から受信したパケットが破棄されてしまうことがあったので修正した。
PPP接続完了直後に送信したIPパケットの送信元IPアドレスが0.0.0.0になる。
PPPネゴシエーションが完了した直後にUDPパケット送信やTCP発信を実行すると、そのパケットの送信元IPアドレスが0.0.0.0になることがあったので修正した。
MS-CHAPv2を使用しない設定のとき、相手からMS-CHAPv2を要求されるとACKを返してしまう。
INCLUDE_MSCHAPV2を定義しない状態にしても、相手からMS-CHAPv2を要求されるとACKを返していた。そのため、MD5による認証ができずに接続が失敗してしまっていたので修正した。
モデムから不正な応答が返ると発信が終了しない。
「ATD」コマンドに対して「OK」が返った場合、その後も「CONNECT」や「NO CARRIER」を待ち続けてしまうので修正した。
モデムが応答を返さない状態で着信停止を実行しても無効となる。
モデムが応答を返さない異常状態のときに「ctrl_listen_stop」で着信停止を要求しても、着信可能状態に戻ってしまうことがあったので修正した。
発信時のエラーがクリアされない。
一旦発信を実行して認証失敗などで切断後、着信を行なうとネゴシエーションが成功してもコールバック関数に発信時のエラーが通知されてしまうので修正した。
再送間隔が設定したものより長くなることがある。
LCPの再送間隔を3秒に設定しても、4秒になることがあったので修正した。
LCPリンクアップ直後に受信したIPCPパケットを無視することがある。
相手がLCP ConfAckとIPCP ConfReqを連続して送信してきた場合、IPCP ConfReqを無視することがあったので修正した。
CodeRejの内容が間違っている。
本来CodeRejのデータ部はコード、ID、長さ、データ部と続くが、データ部しか送信していなかったので修正した。
ConfNak/ConfRejの最大送信回数が設定地より多い。
PPP_MFCの定義で設定した最大送信回数より1回多く送信していたので修正した。
ACFC/PFCの扱いが自分側と相手側で分かれていない。
ACFC/PFCは相手にフィールド圧縮して送信するよう要求するものだが、そのオプションをつけると自分からの送信パケットも圧縮していたので修正した。
自分からのConfReq内容が相手からのConfReq内容に影響される。
例えば送信するConfReqにMagicNumberのオプションがついていなくても、受信したConfReqについていた場合、次回送信するConfReqにそのオプションをつけていた。送信と受信のオプションを完全に分離するよう修正した。
ネゴシエーション中の切断理由が不正な場合がある。
ネゴシエーション中に回線が突然切れた場合や内容が不正だとして切断した場合、切断理由が0になる場合があったので修正した。
GREパケットのCallerIDが0になっている。
PPTPで使用するGREのCallerIDが、ACKパケットの場合0になっていたので修正した。
・Cente PPP Ver.1.00 – Ver.2.20
・Cente PPP Ver.1.00 – Ver.2.12
【HTTPd修正】
受信したヘッダのパースに失敗する事があるバグを修正。
受信したヘッダが、someheader: str=valueのように、"が無くかつ改行が続く場合に、パースに失敗するバグを修正。
(http_common_get_data_from_headerの修正)
【HTTPc修正】
プロキシサーバ対応。
プロキシサーバ経由で通信を行えるようにした。(認証、SSLにも対応)
受信したヘッダのパースに失敗する事があるバグを修正。
受信したヘッダが、someheader: str=valueのように、"が無くかつ改行が続く場合に、パースに失敗するバグを修正。
(http_common_get_data_from_headerの修正)
Basic認証が失敗した時に、1回余分にアクセスする事があるバグを修正。
Basicに認証に失敗すると、同じユーザー名・パスワードで再度アクセスを行い、計2回の失敗アクセスを行ってしまう。
queryがあった時に、Digest認証できないバグを修正。
queryがあった時のDigest値の計算ルーチンのバグ修正。それにともない、Digest値計算用のテンポラリバッファとして、T_HTTPSOCKETにdigest_uriを追加。
use_total_tmoを1にしても、指定した時間でリターンしないバグを修正。
httpc_send_dat()で、タイムアウト値を正しく減算していなかった。
httpc_get/post/get_with_sock/post_with_sockの引数チェックを強化。
・引数のヌルポインタチェックを追加。
・T_HTTPC_REQHEADERのuriが空文字列かどうかのチェックを追加。
queryの文字として、0x80-0xffの範囲の文字を使えなかったのを修正。
http_common_url_encode()で、0x80-0xffの範囲の文字を正しく変換できるように修正。
queryが内部バッファより長くなると、正しく送信できないバグを修正。
queryのトータル長がT_HTTPSOCKET->tmp_bufのサイズより大きくなると 正しくqueryが送られない。(httpc_url_encode_send()の修正)
Cookieを正しくパースできない事があるバグを修正。
httpc_parse_setcookie()の以下の不具合を修正。
・一行に複数のcookieが,で連結されている場合にパースできない。
・expiresの値を正しく取得できない
keepalive可能な場合でも、通信を切ってしまう事があるのを修正。
サーバがHTTP1.1でConnectionヘッダを送ってこない場合には、keep-aliveと見なすべきだが、HTTPc側でkeep-aliveを行わずに通信を切っていた。
httpc_get_with_sock()/post_with_sock()で認証方法をAUTH_DIGESTからAUTH_BASIC_ONCEに変更すると、アクセスに失敗する。
最初Digest認証を行った後にAUTH_BASIC_ONCEを指定すると、送られるべきAuthorizationヘッダが送られず、アクセスにに失敗する。
送信するCookieの後ろに余分な;が付く。
動作に支障は無いと考えられるが、最後の;を送らないように修正。
・Cente PPP Ver.1.00 – Ver.2.20
ドキュメント修正
本リリースは、ドキュメントの修正のみで、ソースコードの修正はありません。
バージョンアップにおける注意事項(HTTPd/c).pdfにおいて、「変更されたファイル」の漏れ・記述間違いがあったので、全て修正。
HTTPd/c改版履歴(本HTML)のHTTPd ver1.50のHTTPd修正において、「通信エラーが発生した時に次の通信に失敗する事がある不具合を修正」の記述が抜けていたので、追加記述。
SMTPcのIPv6対応
以下のAPIを追加。
smtpc_set_server_ip46
smtpc_set_server6
POPcのIPv6対応
以下のAPIを追加。
popc_login_ip46
popc_login_apop_ip46
HTTPd修正
CGIで、404などの場合にでも、任意のエラーページを返す事ができるようにした。
CGI内で、httpd_send_http_prolog()を呼ばなかった時にのみ、デフォルトのエラーページが送られる。
Locationヘッダを正しく送信できない不具合修正。
outheader->locationに文字列がセットされていても、その文字列を正しくブラウザに送っていなかった。
CGIやEmbDataのリソース名の制限を無くした。
CGIやEmbDataのリソース名に"."が入っていなくても動作するようにした。
404等のエラーコード送信時でも、TCPを切断せずに、可能な限りkeepaliveするようにした。
以前はエラー時には必ず
・HTTP1.0で送信
・コネクションを切る
としていたが、 可能な限りkeepaliveするように変更。
HTTPc修正
httpc_set_socketが無駄に複数回呼ばれる事があるのを修正。
httpc_connect()内でhttpc_set_socket()を呼んでいたが、一度のhttpc_get()でhttpc_connect()が複数呼ばれる事があり、その度にhttpc_set_socket()が呼ばれていた。
一回一回のパケット受信タイムアウトではなく、サーバーとのトータルの通信タイムアウトを指定できるようにした。
HTTPC_USE_TOTAL_TIMEOUTとHTTPC_TOTAL_TIMEOUTを追加。詳しい使い方は、マニュアルを参照のこと。
cepが解放されない事があるのを修正
httpc_cls_cep()で失敗(タイムアウトなど)すると、cepの解放が行われないのを修正。
マルチパートデータのPOSTのサンプルを追加。
http/sample/cthttpc_sample2.cを追加。
Basic認証時に送る文字列を、"Authorization: BASIC"から"Authorizatino: Basic"に変更
一部の組み込みwebサーバーなどで、正しく動作しないケースが見つかった。RFC上はどちらでも良い事になっているが、多くのブラウザに合わせて、"BASIC"ではなく"Basic"を送るように変更。
Page 5 of 9