diff --git a/federationhq_rcpt b/federationhq_rcpt index 1201dc7..a1ef2be 100644 --- a/federationhq_rcpt +++ b/federationhq_rcpt @@ -75,13 +75,15 @@ sub createDSN sub updateTransactionWithRecipientInfo { - my ($self, $transaction, $sth) = @_; + my ($self, $transaction, $rcpt_row) = @_; - return unless $sth->rows == 1; + return 0 unless defined($rcpt_row); + return 0 unless defined($rcpt_row->{username}); + return 0 unless defined($rcpt_row->{dovecot_server}); - my $row = $sth->fetchrow_hashref; - my $dovecot_server = $row->{dovecot_server}; - my $username = $row->{username}; + + my $dovecot_server = $rcpt_row->{dovecot_server}; + my $username = $rcpt_row->{username}; my $result = $self->{fetch_dovecot_details_sth}->execute($dovecot_server); if (!$result) @@ -96,7 +98,7 @@ sub updateTransactionWithRecipientInfo return 0; } - $row = $self->{fetch_dovecot_details_sth}->fetchrow_hashref(); + my $row = $self->{fetch_dovecot_details_sth}->fetchrow_hashref(); my $hostname = $row->{hostname}; my $port = $row->{port}; @@ -135,7 +137,7 @@ sub hook_rcpt { if ($self->{rcpt_sth}->rows == 1) { $self->log(LOGDEBUG, " found recipient in database"); - my $ret = $self->updateTransactionWithRecipientInfo($transaction, $self->{rcpt_sth}); + my $ret = $self->updateTransactionWithRecipientInfo($transaction, $self->{rcpt_sth}->fetchrow_hashref ); if (!$ret) {