obexapp & openobex-current
Maksim Yevmenkin
maksim.yevmenkin at gmail.com
Tue Jun 21 19:28:01 UTC 2011
Hi Iain,
> openobex is aiming towards a 2.0 release so I thought I'd try it out.. I
> have forwarded a set of patches for some build failures on NetBSD which
> may also help for FreeBSD, but after that I have another issue
>
> The issue I found was that obexapp when linked with openobex-current fails
> to run in server mode. I traced the problem to the custom transport
> backend does not have any method for setting a local address, which is
> implied by OBEX_ServerRegister passing one, but in truth there was never
> any actual point in passing an address here since a custom transport is
> responsible for its own addressing.
>
> The documentation was perhaps lacking before, but the following appears in
> the comments for OBEX_ServerRegister now;
>
> Bind a server socket to an Obex service. Common transport have
> specialised version of this function.
> If you want to call the listen callback of the custom transport,
> use NULL for saddr and 0 for addrlen.
>
> and so, changing server.c as below allows to the server to run just fine
> without any side effects, and I think that should be ok for earlier
> openobex versions too?
i think it looks fine :) thank you. i will give it a quick test in a
day or two and commit it. in the same time, it would be helpful if
someone who uses obexapp on freebsd give it a quick try as well.
thanks,
max
> --- /home/plunky/misc/orig/obexapp/server.c 2010-01-08 18:31:22.000000000 +0000
> +++ server.c 2011-06-21 15:47:47.000000000 +0100
> @@ -119,7 +119,6 @@ obexapp_server(obex_t *handle)
> {
> context_p context = (context_p) OBEX_GetUserData(handle);
> int error = -1;
> - struct sockaddr_rfcomm addr;
>
> context->ss = sdp_open_local(NULL);
> if (context->ss == NULL) {
> @@ -141,14 +140,7 @@ obexapp_server(obex_t *handle)
> goto done;
> }
>
> - memset(&addr, 0, sizeof(addr));
> - addr.rfcomm_len = sizeof(addr);
> - addr.rfcomm_family = AF_BLUETOOTH;
> - addr.rfcomm_channel = context->channel;
> - memcpy(&addr.rfcomm_bdaddr, &context->laddr, sizeof(context->laddr));
> -
> - if (OBEX_ServerRegister(handle, (struct sockaddr *) &addr,
> - sizeof(addr)) < 0) {
> + if (OBEX_ServerRegister(handle, NULL, 0) < 0) {
> log_err("%s(): OBEX_ServerRegister failed", __func__);
> goto done;
> }
>
> _______________________________________________
> freebsd-bluetooth at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-bluetooth
> To unsubscribe, send any mail to "freebsd-bluetooth-unsubscribe at freebsd.org"
>
More information about the freebsd-bluetooth
mailing list