On Mon, 6 May 2002, Duncan Sands wrote:

> 
> I've noticed some problems with async mode: occasional network
> failures (reproducible) that disappear without async.  For example,
> posting data to certain web pages (get time out), the backup program
> unison timing out while waiting for info from my machine.  These problems
> occurred every time I tried them (over the space of two days) but went
> away the moment I turned off async.  What can I do to help track this down?
> 
> All the best,
> 
> Duncan.
> 
> 
OK. I've had chance to have another look at this and I have fscked up :-(

(The line numbers won't match exactly as I have some extra changes but
see if this makes any difference)

(Untested yet - I need to reboot my firewall as I don't have the correct
modules in this kernel)

Regards,

Tim.


Index: src/pppoa3.c
===================================================================
RCS file: /cvsroot/speedtouch/speedtouch/src/pppoa3.c,v
retrieving revision 1.23
diff -u -r1.23 pppoa3.c
--- src/pppoa3.c        18 Apr 2002 19:46:28 -0000      1.23
+++ src/pppoa3.c        9 May 2002 18:17:45 -0000
@@ -1190,10 +1192,8 @@
                                report(2, REPORT_DEBUG|REPORT_DATE|REPORT_DUMP, "PPP 
packet read from ppp(d) (%d bytes long)\n", async_buf, data, data);
                        }
 
-                       /* ASSERT data>0 here */
-                       --data;
-                   
-                       if(PPPState == STATE_WAITFOR_FRAME_ADDR) {
+                       if(data && PPPState == STATE_WAITFOR_FRAME_ADDR) {
+                               data--;
                                if (*ptr++ == FRAME_ADDR) {
                                        PPPState = STATE_DROP_PROTO;
                                        PPPPacketSize = 0;
@@ -1201,15 +1201,17 @@
                                }
                        }
                    
-                       if(PPPState == STATE_DROP_PROTO) {
+                       if(data && PPPState == STATE_DROP_PROTO) {
+                               data--;
                                if (*ptr++ == (FRAME_CTRL ^ FRAME_ENC)) {
                                        PPPState = STATE_BUILDING_PACKET;
                                }
                        }
 
                        /* Start building frame */
-                       if(PPPState == STATE_BUILDING_PACKET) {
+                       if(data && PPPState == STATE_BUILDING_PACKET) {
                                unsigned char c = *ptr++;
+                               data--;
                                switch(c) {
                                case FRAME_ESC:
                                        PPPXorValue = FRAME_ENC;
-- 
God said, "div D = rho, div B = 0, curl E = - @B/@t, curl H = J + @D/@t," 
and there was light.

     http://tjw.hn.org/      http://www.locofungus.btinternet.co.uk/



Liste de diffusion modem ALCATEL SpeedTouch USB
Pour se d�sinscrire : mailto:[EMAIL PROTECTED]?subject=unsubscribe

        

Reply via email to