Skip to content

Commit

Permalink
More fixes for async error handling.
Browse files Browse the repository at this point in the history
  • Loading branch information
Muir Manders committed Mar 13, 2013
1 parent e60c6da commit 2d46bc1
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 deletions.
11 changes: 9 additions & 2 deletions lib/radius.js
Expand Up @@ -609,18 +609,21 @@ Radius._encode = function(args) {
var self = this;
if (!args || args.code === undefined) {
self.error("encode: must specify code", args.callback);
return;
}

if (args.secret === undefined) {
self.error("encode: must provide RADIUS shared secret", args.callback);
return;
}

var packet = new Buffer(4096);
var offset = 0;

var code = reverse_code_map[args.code];
if (code === undefined) {
self.error("encode: invalid packet code", args.callback);
self.error("encode: invalid packet code '" + args.code + "'", args.callback);
return;
}

packet.writeUInt8(+code, offset++);
Expand All @@ -631,6 +634,7 @@ Radius._encode = function(args) {
}
if (identifier > 255) {
self.error("encode: identifier too large", args.callback);
return;
}
packet.writeUInt8(identifier, offset++);

Expand All @@ -643,7 +647,10 @@ Radius._encode = function(args) {
if (args.code == "Access-Request") {
if (args.callback) {
crypto.randomBytes(AUTH_LENGTH, function(err, buf) {
if (err) self.error(err, args.callback);
if (err) {
self.error(err, args.callback);
return;
}
self._encode_with_authenticator(args, packet, offset, buf);
});
return;
Expand Down
13 changes: 12 additions & 1 deletion test/radius.test.js
Expand Up @@ -816,7 +816,18 @@ module.exports = testCase({
test.equal( null, decoded );
test.ok( err.message.match(/invalid packet code/) );

test.done();

radius.encode({
secret: secret,
identifier: 165278,
code: "Access-Accept",
callback: function(err, encoded) {
test.equal( null, encoded );
test.ok( err.message.match(/identifier too large/) );

test.done();
}
});
}
});
}
Expand Down

0 comments on commit 2d46bc1

Please sign in to comment.