Re: Call for testers! (and updated pre-release tarball)
- From: Matt Davey <mcdavey mrao cam ac uk>
- To: "The PalmOS< tm> integration pacakge" <gnome-pilot-list gnome org>
- Subject: Re: Call for testers! (and updated pre-release tarball)
- Date: Thu, 13 Apr 2006 00:14:03 +0100
> > > > NOW I can beat it up properly.
> [...]
> > It doesn't like network, dies with the error below:
> >
> > (gnome-pilot:8748): gpilotd-WARNING **: looking for string:
> > Vendor=0830 ProdID=0061
> >
> > gpilotd-Message: Woke on network: Treo 650
> >
> > (gnome-pilot:8748): gpilotd-WARNING **: pi_accept_to returned -200:
> > Broken pipe
>
> Okay, I'm seeing this behaviour. Oddly, I only have trouble
> with pi-nredir. A direct WLAN connection from my device works
> reliably. As far as I could see, the net handshake gets stuck.
> It seems to be the net_rx call in net_rx_handshake on the gpilotd
> side. Does that ring any bells?
David,
I think I've found two causes of this bug:
1. In pilot-link socket.c, in protocol_queue_build, there's
a call to dev_prot->flush that is zapping the first
packet header sent by pi-nredir. This occurs
whenever you don't request protocol autodetection
or don't pass in PI_PF_DLP as the protocol.
I don't know what purpose the flush() serves.
2. On the gpilotd side, when doing a net connection I was
setting PI_PF_NET rather than autodetection.
Is this deprecated? If I set 'PI_PF_DLP' to
pi_socket, I can connect. Of course, this
is merely a workaround to avoid the flush() call above.
So I'm appending two patches, one for problem 1 and one for
problem 2. I think applying either of them will solve the
problem. (the second patch should apply with a bit of fuzz).
The second patch also fixes the problem gp had when ctrl-C'ing
a pi-nredir mid-sync.
Matt
======================================================================
--- socket.c.~1.105.~ 2006-01-24 08:49:37.000000000 +0000
+++ socket.c 2006-04-12 23:26:12.885400912 +0100
@@ -541,7 +541,7 @@ protocol_queue_build (pi_socket_t *ps, i
} else if (protocol == PI_PF_DLP) {
protocol = PI_PF_PADP;
} else {
- dev_prot->flush(ps, PI_FLUSH_INPUT);
+ /*dev_prot->flush(ps, PI_FLUSH_INPUT);*/
}
/* The connected protocol queue */
======================================================================
--- gpilotd.c 9 Apr 2006 11:52:55 -0000 1.152
+++ gpilotd.c 12 Apr 2006 23:06:50 -0000
@@ -168,7 +171,7 @@ pilot_connect (GPilotDevice *device,int
* listening at this point, so move on to accept */
listen_sd = device->fd;
} else {
- listen_sd = pi_socket (PI_AF_PILOT, PI_SOCK_STREAM, pf);
+ listen_sd = pi_socket (PI_AF_PILOT, PI_SOCK_STREAM, PI_PF_DLP);
if (listen_sd < 0) {
g_warning ("pi_socket returned error %d (%s)",
listen_sd,
@@ -659,7 +663,13 @@ sync_device (GPilotDevice *device, GPilo
}
} else {
if (connect_error==1) return FALSE; /* remove this device */
- else return TRUE;
+ else {
+ if (device->type == PILOT_DEVICE_NETWORK) {
+ /* fix broken pisock sockets */
+ reread_config = TRUE;
+ }
+ return TRUE;
+ }
}
return TRUE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]