UNIX_FD in practice?
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 32/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- ruby
- Área
- backend, networking
Línea de trabajo
Start at the DBus::Object NewConnection declaration and the RegisterProfile call shown in the issue, then reproduce the Bluetooth connection while watching the dbus monitor output. Trace why the method call containing a file descriptor is rejected before the callback runs; done means the callback receives the descriptor without the NotSupported error.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Heya!
I'm using ruby-dbus to attempt a Bluetooth serial profile callback, and I'm
running into a "Tried to send message with Unix file descriptors to a client that
doesn't support that." error message from dbus.
It's entirely possible I'm defining the callback incorrectly, but I think that's
correct. Example profile definition and registration (as defined here)
class SerialConnection < DBus::Object
dbus_interface( 'org.bluez.Profile1' ) do
dbus_method( :Release ) do
puts "... release"
nil
end
dbus_method( :NewConnection, "in device:o, in fd:h, in fd_props:a{sv}" ) do |device, fd, fd_props|
puts "... incoming connection %p %p %p" % [ device, fd, fd_props ]
# sock = Socket.for_fd( fd )
# ...
nil
end
dbus_method( :RequestDisconnection, "in device:o" ) do |device|
puts "... disconnect"
nil
end
end
end
serial_conn = SerialConnection.new( '/serial/connection' )
bluez_service = DBus::SystemBus.instance.service( 'org.bluez' ).introspect
bluez_profile_manager = bluez_service[ '/org/bluez' ][ 'org.bluez.ProfileManager1' ]
bluez_profile_manager.RegisterProfile( serial_conn.path, '1101', {
'Name' => 'Serial Port',
'Role' => 'server',
'RequireAuthorization' => false,
'Channel' => DBus.variant( 'q', 22 )
});
# ... enter dbus main loop here
When an RFCOMM compatible client connects, the dbus monitor shows it disconnect
immediately (the callback doesn't fire at all).
signal time=1649451498.238931 sender=:1.2 -> destination=(null destination) serial=870 path=/org/bluez/hci0/dev_0C_8D_CA_99_D7_E7; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
string "org.bluez.Device1"
array [
dict entry(
string "Connected"
variant boolean true
)
]
array [
]
method call time=1649451498.709483 sender=:1.2 -> destination=:1.73 serial=871 path=/serial/connection; interface=org.bluez.Profile1; member=NewConnection
object path "/org/bluez/hci0/dev_0C_8D_CA_99_D7_E7"
file descriptor
inode: 72836 type: socket
address family: bluetooth
array [
]
error time=1649451498.709751 sender=org.freedesktop.DBus -> destination=:1.2 error_name=org.freedesktop.DBus.Error.NotSupported reply_serial=871
string "Tried to send message with Unix file descriptorsto a client that doesn't support that."
signal time=1649451503.316416 sender=:1.2 -> destination=(null destination) serial=872 path=/org/bluez/hci0/dev_0C_8D_CA_99_D7_E7; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
string "org.bluez.Device1"
array [
dict entry(
string "Connected"
variant boolean false
)
]
array [
]
It seems like it's complaining specifically about the second argument to the
NewConnection method.
file descriptor
inode: 72836 type: socket
address family: bluetooth
Is there a different path I should be taking to tackle this?
Thanks for any insight provided.
- Lenguaje dominante
- Ruby
- Estrellas
- 174
- Forks
- 51
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de mvidner/ruby-dbus
-
Specify rexml versioningAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
-
Rexml or Nokogiri?Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
-
NetworkManager.Settings.Connection cannot round-trip, calling Update with what GetSettings returnedAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
-
good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Todos los issues de mvidner/ruby-dbus
Issues similares
-
clouflaure de fernandoAbiertoenhancement
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
cloudflare/mcp#271 ·
Los mantenedores suelen responder en 1 día
-
[KLayout][DRC] Gat.b1 only checks gate regions, misses facing 3.3 V poly end caps (Figure 5.6)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
IHP-GmbH/IHP-Open-PDK#1266 ·
Los mantenedores suelen responder en 2 días
-
Source Support
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
we-promise/sure#4056 ·
Los mantenedores suelen responder en 1 día
-
Refactor
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
valkey-io/valkey-glide-ruby#347 ·
Los mantenedores suelen responder en 4 días