Skip to content

Commit 319d3b8

Browse files
committed
Destintion and Sender are optional fields, handle that
This is not typically the case for bus-uses, but is common when using custom peer-to-peer connections.
1 parent da6051a commit 319d3b8

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

conn.go

+6-2
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,9 @@ func (conn *Conn) sendError(e Error, dest string, serial uint32) {
439439
msg.Type = TypeError
440440
msg.serial = conn.getSerial()
441441
msg.Headers = make(map[HeaderField]Variant)
442-
msg.Headers[FieldDestination] = MakeVariant(dest)
442+
if dest != "" {
443+
msg.Headers[FieldDestination] = MakeVariant(dest)
444+
}
443445
msg.Headers[FieldErrorName] = MakeVariant(e.Name)
444446
msg.Headers[FieldReplySerial] = MakeVariant(serial)
445447
msg.Body = e.Body
@@ -460,7 +462,9 @@ func (conn *Conn) sendReply(dest string, serial uint32, values ...interface{}) {
460462
msg.Type = TypeMethodReply
461463
msg.serial = conn.getSerial()
462464
msg.Headers = make(map[HeaderField]Variant)
463-
msg.Headers[FieldDestination] = MakeVariant(dest)
465+
if dest != "" {
466+
msg.Headers[FieldDestination] = MakeVariant(dest)
467+
}
464468
msg.Headers[FieldReplySerial] = MakeVariant(serial)
465469
msg.Body = values
466470
if len(values) > 0 {

export.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func (conn *Conn) handleCall(msg *Message) {
4949
name := msg.Headers[FieldMember].value.(string)
5050
path := msg.Headers[FieldPath].value.(ObjectPath)
5151
ifaceName, hasIface := msg.Headers[FieldInterface].value.(string)
52-
sender := msg.Headers[FieldSender].value.(string)
52+
sender, hasSender := msg.Headers[FieldSender].value.(string)
5353
serial := msg.serial
5454
if ifaceName == "org.freedesktop.DBus.Peer" {
5555
switch name {
@@ -132,7 +132,9 @@ func (conn *Conn) handleCall(msg *Message) {
132132
reply.Type = TypeMethodReply
133133
reply.serial = conn.getSerial()
134134
reply.Headers = make(map[HeaderField]Variant)
135-
reply.Headers[FieldDestination] = msg.Headers[FieldSender]
135+
if hasSender {
136+
reply.Headers[FieldDestination] = msg.Headers[FieldSender]
137+
}
136138
reply.Headers[FieldReplySerial] = MakeVariant(msg.serial)
137139
reply.Body = make([]interface{}, len(ret)-1)
138140
for i := 0; i < len(ret)-1; i++ {

0 commit comments

Comments
 (0)