Down in your bbs_forum.cgi sub "PrintPostOrReplyPage", at the very end is a line: require "bbs_html_create_message.pl"; Replace it with: if (-e "$forum_dir/$username.lock") { unlink("$forum_dir/$username.lock"); } open (LOCKFILE, ">$forum_dir/$username.lock") || &CgiDie("Could Not Open Lock File\n"); print LOCKFILE ""; close (LOCKFILE); require "bbs_html_create_message.pl"; Down in the sub "CreatePosting", enclose everything in the subroutine with this "if" statement: if (-e "$forum_dir/$username.lock") { unlink("$forum_dir/$username.lock"); ...the rest of the CreatePosting subroutine up until &PrintForumPage then... } # end of if post file lock exists &PrintForumPage; You just need to make sure the last &PrintForumPage call is the last command in the subroutine before it returns, so that the system will always run &PrintForumPage whether it posts a message or not.