comparison src/dbusbind.c @ 97211:194ecdbbd8a3

* dbusbind.c (xd_read_message): Handle D-Bus error messages.
author Michael Albinus <michael.albinus@gmx.de>
date Fri, 01 Aug 2008 18:35:10 +0000
parents b0fa771b5389
children 14fccbb34a16
comparison
equal deleted inserted replaced
97210:50d4090b5c35 97211:194ecdbbd8a3
1434 args = Fnreverse (args); 1434 args = Fnreverse (args);
1435 } 1435 }
1436 1436
1437 /* Read message type, message serial, unique name, object path, 1437 /* Read message type, message serial, unique name, object path,
1438 interface and member from the message. */ 1438 interface and member from the message. */
1439 mtype = dbus_message_get_type (dmessage); 1439 mtype = dbus_message_get_type (dmessage);
1440 serial = (mtype == DBUS_MESSAGE_TYPE_METHOD_RETURN ? 1440 serial =
1441 dbus_message_get_reply_serial (dmessage) : 1441 ((mtype == DBUS_MESSAGE_TYPE_METHOD_RETURN)
1442 dbus_message_get_serial (dmessage)); 1442 || (mtype == DBUS_MESSAGE_TYPE_ERROR))
1443 uname = dbus_message_get_sender (dmessage); 1443 ? dbus_message_get_reply_serial (dmessage)
1444 path = dbus_message_get_path (dmessage); 1444 : dbus_message_get_serial (dmessage);
1445 uname = dbus_message_get_sender (dmessage);
1446 path = dbus_message_get_path (dmessage);
1445 interface = dbus_message_get_interface (dmessage); 1447 interface = dbus_message_get_interface (dmessage);
1446 member = dbus_message_get_member (dmessage); 1448 member = dbus_message_get_member (dmessage);
1447 1449
1448 XD_DEBUG_MESSAGE ("Event received: %s %d %s %s %s %s %s", 1450 XD_DEBUG_MESSAGE ("Event received: %s %d %s %s %s %s %s",
1449 (mtype == DBUS_MESSAGE_TYPE_INVALID) ? 1451 (mtype == DBUS_MESSAGE_TYPE_INVALID)
1450 "DBUS_MESSAGE_TYPE_INVALID" : 1452 ? "DBUS_MESSAGE_TYPE_INVALID"
1451 (mtype == DBUS_MESSAGE_TYPE_METHOD_CALL) ? 1453 : (mtype == DBUS_MESSAGE_TYPE_METHOD_CALL)
1452 "DBUS_MESSAGE_TYPE_METHOD_CALL" : 1454 ? "DBUS_MESSAGE_TYPE_METHOD_CALL"
1453 (mtype == DBUS_MESSAGE_TYPE_METHOD_RETURN) ? 1455 : (mtype == DBUS_MESSAGE_TYPE_METHOD_RETURN)
1454 "DBUS_MESSAGE_TYPE_METHOD_RETURN" : 1456 ? "DBUS_MESSAGE_TYPE_METHOD_RETURN"
1455 (mtype == DBUS_MESSAGE_TYPE_ERROR) ? 1457 : (mtype == DBUS_MESSAGE_TYPE_ERROR)
1456 "DBUS_MESSAGE_TYPE_METHOD_ERROR" : 1458 ? "DBUS_MESSAGE_TYPE_ERROR"
1457 "DBUS_MESSAGE_TYPE_METHOD_SIGNAL", 1459 : "DBUS_MESSAGE_TYPE_SIGNAL",
1458 serial, uname, path, interface, member, 1460 serial, uname, path, interface, member,
1459 SDATA (format2 ("%s", args, Qnil))); 1461 SDATA (format2 ("%s", args, Qnil)));
1460 1462
1461 if (mtype == DBUS_MESSAGE_TYPE_METHOD_RETURN) 1463 if ((mtype == DBUS_MESSAGE_TYPE_METHOD_RETURN)
1464 || (mtype == DBUS_MESSAGE_TYPE_ERROR))
1462 { 1465 {
1463 /* Search for a registered function of the message. */ 1466 /* Search for a registered function of the message. */
1464 key = list2 (bus, make_number (serial)); 1467 key = list2 (bus, make_number (serial));
1465 value = Fgethash (key, Vdbus_registered_functions_table, Qnil); 1468 value = Fgethash (key, Vdbus_registered_functions_table, Qnil);
1466 1469