Eliminate the SI receive buffer length requirement
[ric-plt/lib/rmr.git] / src / rmr / si / src / si95 / sipoll.c
index 0ecca66..8c28977 100644 (file)
@@ -53,7 +53,7 @@ extern int SIpoll( struct ginfo_blk *gptr, int msdelay )
  char ibuf[1025];
  int i;                        //  loop index
  struct tp_blk *tpptr;         //  pointer at tp stuff
- struct tp_blk *nextone;        //  pointer at next block to process
+ struct tp_blk *nextone = NULL;        //  pointer at next block to process
  int pstat;                    //  poll status
  int kstat;                    //  keyboard status
  struct timeval  delay;        //  delay to use on select call
@@ -120,9 +120,9 @@ extern int SIpoll( struct ginfo_blk *gptr, int msdelay )
       }
 
      // for( tpptr = gptr->tplist; tpptr != NULL; tpptr = tpptr->next )
-     for( tpptr = gptr->tplist; tpptr != NULL; tpptr = nextone )
-      {
-       nextone = tpptr->next;                                  //  prevent coredump if we delete the session
+       tpptr = gptr->tplist; 
+       while( tpptr != NULL ) {
+               nextone = tpptr->next;                                  //  allow for a delete in loop
 
        if( tpptr->squeue != NULL && (FD_ISSET( tpptr->fd, &gptr->writefds )) )
         SIsend( gptr, tpptr );              //  send if clear to send
@@ -180,6 +180,8 @@ extern int SIpoll( struct ginfo_blk *gptr, int msdelay )
             }
            }                                                //  end tcp read
         }                    //  end if event on this fd
+
+               tpptr = nextone;
       }                      //  end for each fd in the list
     }                        //  end if not in shutdown