+my $ph = $msg->pseudoheaders();
+my $new_bug = 0;
+# create the bug if necessary
+if (not defined $msg->bug_num) {
+ # if this message was sent to -submitter, error out
+ if ($msg->bug_address eq 'submitter') {
+ $msg->send_reply({message => 'error',
+ template => 'process_no_bug_number',
+ type => 'nonumnosub',
+ });
+ $msg->finish;
+ exit 0;
+ }
+ if (not defined $ph->{source} and
+ not defined $ph->{package} and
+ not defined $config{default_package}
+ ) {
+ $msg->send_reply({message => 'error',
+ template => 'process_no_package',
+ type => 'nopkgnosub',
+ });
+ $msg->finish;
+ exit 0;
+ }
+ $msg->bug_num(new_bug());
+ $new_bug = 1;
+}
+# load the bug data for this bug
+my ($locks_recv,@data) = lock_read_all_merged_bugs($msg->bug_num);
+if (not $locks_recv or $data[0]->{archived}) {
+ unfilelock() while ($locks_recv--);
+ $msg->send_reply({message=> 'error',
+ template => 'process_unknown_bug_number',
+ type => 'unknown',
+ });
+ $msg->finish();
+}
+# write the received message to the log
+$msg->append_to_log($_->{bug_num}) foreach @data;
+
+# if this is a new bug, add the appropriate new control actions
+if ($new_bug) {
+ # figure out the package
+ my $package = $config{default_package};
+ if (defined $ph->{source} and length $ph->{source}) {
+
+ }
+ unshift @{$ph->{control}}