Skip to content

Commit

Permalink
return error code on FAIL in ajax subscribe (#432)
Browse files Browse the repository at this point in the history
* Adding (more) graceful failure when phplist does not have access to random_bytes() from some cryptographically secure pseudorandom number generator (CSPRNG). For more info, please see:

 * https://discuss.phplist.org/t/common-installation-errors-manual-chapter-feedback-and-discussion/217/4
 * https://mantis.phplist.org/view.php?id=18546
 * https://tech.michaelaltfield.net/2018/08/25/fix-phplist-500-error-due-to-random_compat/

* Added a line to throw an exception when the phplist ajax subscribe endpoint fails to add a new subscriber. Throwing this exception causes php to return a 500 Internal Server Error, rather than the existing functionality which just returns a 200 error (merely containing 'FAIL' in the body of the response). Consequently, the ajax client thinks the failure is actually a success, since the http status code is still a 200.

This change makes the response more robust and easier for ajax clients (such as the jquery example linked below) to catch errors from phplist.

 * https://discuss.phplist.org/t/ajax-subscribe-api/974

For more information, please see the following phplist bug report:

 * https://mantis.phplist.org/view.php?id=19524
  • Loading branch information
maltfield authored and Sam Tuke committed Nov 3, 2018
1 parent 680f06d commit e01b68f
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions public_html/lists/index.php
Expand Up @@ -267,7 +267,15 @@
}
exit;
} else {
// we failed to subscribe the user; send an error back to
// the ajax client

echo 'FAIL';

// thow an exception so the http status code is a 500
// Internal Server Error, easily caught by jquery.ajax()
throw new Exception( "Error: Subscribe attempt failed!" );

}
break;
case 'preferences':
Expand Down

0 comments on commit e01b68f

Please sign in to comment.