diff --git a/lib/x11/xcore.js b/lib/x11/xcore.js index 90de938..f0950ec 100644 --- a/lib/x11/xcore.js +++ b/lib/x11/xcore.js @@ -185,12 +185,25 @@ XClient.prototype.expectReplyHeader = function() var type = res[0]; var seq_num = res[2]; if (type == 0) - { - var error_code = res[1]; + { + var error_code = res[1]; + var error = {}; + error.code = error_code; + error.seq = seq_num; + error.message = xerrors.errorText[error_code]; + // unpack error packet (32 bytes for all error types, 8 of them in CCSL header) client.pack_stream.get(24, function(buf) { // TODO: dispatch, use sequence number - console.error('error!!!!' + xerrors.errorText[error_code]); + //TODO: add more generic way to read common values + // if (error_code == 14) + { + var res = buf.unpack('LSC'); + error.badPparam = res[0]; // id: GC, WinID, Font, Atom etc; Value + error.minorOpcode = res[1]; + error.majorOpcode = res[2]; + } + client.emit('error', error); client.expectReplyHeader(); } ); return;