Re: Call for testers! (and updated pre-release tarball)



> > > >         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]