Rebol/Core
新しいサービスの場所へのリダイレクト リンクを含む、静的テキストを提供する一種の Web サーバーを作成するために (278-3-1) をいじっているときに、明らかにキャッチできないエラーが発生しました。
Carl Sassenrath
エラーの特定の場所は、 2006 年に彼自身が書いたサンプル コードにあるようです。そのため、何年も経っても検出されないエラーが存在する可能性があることに少し困惑しています。
これらのスクリプトを 3 つ同時に実行し、3 つの個別のポートを監視しています。基本的に、スクリプトは正常に動作します...一度に複数のブラウザーで(すべての並列スクリプトで)繰り返しアクセスすると、かなり安定しているように見えます...しかし、次々と失敗します。場合によっては 2 分後、場合によっては 20 分後 - print ステートメントを追加した後、60 分後になることもありますが、最終的には次のように失敗します。
** スクリプト エラー: 範囲外または過去の終わり
** 場所: ずっと
** 近く: 空ではありませんか? リクエスト: 最初の http ポート
プログラム ループのほぼすべての部分を try[][exception] でラップしようとしましたが、それでもエラーが発生します。残念ながら、この時期は検索機能が弱いようです。問題を説明できるものは何も見つからなかったからです。
このコードは、Carl Sassenrath のTiny Web Serverの縮小版で、特定の IP にバインドし、ファイルをロードする代わりに HTML を出力するようにわずかに変更されています。
REBOL [title: "TestMovedServer"]
AppName: "Test"
NewSite: "http://test.myserver.org"
listen-port: open/lines tcp://:81 browse http://10.100.44.6?
buffer: make string! 1024 ; will auto-expand if needed
forever [
http-port: first wait listen-port
clear buffer
while [not empty? request: first http-port][
print request
repend buffer [request newline]
print "----------"
]
repend buffer ["Address: " http-port/host newline]
print buffer
Location: ""
mime: "text/html"
parse buffer ["get" ["http" | "/ " | copy Location to " "]]
data: rejoin [{
<HTML><HEAD><TITLE>Site Relocated</TITLE></HEAD>
<BODY><CENTER><BR><BR><BR><BR><BR><BR>
<H1>} AppName { have moved to <A HREF="} NewSite {">} NewSite {</A></H1>
<BR><BR><BR>Please update the link you came from.
<BR><BR><BR><BR><BR><A HREF="} NewSite Location {">(Continue directly to the requested page)</A>
</CENTER></BODY></HTML>
}]
insert data rejoin ["HTTP/1.0 200 OK^/Content-type: " mime "^/^/"]
write-io http-port data length? data
close http-port
print "============"
]
皆さんがこれから何を作るかを楽しみにしています!