Code Review
/
ric-plt
/
lib
/
rmr.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Push package to release in package cloud (4.2.2)
[ric-plt/lib/rmr.git]
/
src
/
rmr
/
si
/
src
/
si95
/
siwait.c
diff --git
a/src/rmr/si/src/si95/siwait.c
b/src/rmr/si/src/si95/siwait.c
index
cf06838
..
6a72b30
100644
(file)
--- a/
src/rmr/si/src/si95/siwait.c
+++ b/
src/rmr/si/src/si95/siwait.c
@@
-71,14
+71,10
@@
extern int SIwait( struct ginfo_blk *gptr ) {
ibuf = (char *) malloc( 2048 );
ibuf = (char *) malloc( 2048 );
- gptr->sierr = SI_ERR_SHUTD;
-
if( gptr->flags & GIF_SHUTDOWN ) { // cannot do if we should shutdown
return SI_ERROR; // so just get out
}
if( gptr->flags & GIF_SHUTDOWN ) { // cannot do if we should shutdown
return SI_ERROR; // so just get out
}
- gptr->sierr = SI_ERR_HANDLE;
-
if( gptr->magicnum != MAGICNUM ) { // if not a valid ginfo block
rmr_vlog( RMR_VL_CRIT, "SI95: wait: bad global info struct magic number is wrong\n" );
return SI_ERROR;
if( gptr->magicnum != MAGICNUM ) { // if not a valid ginfo block
rmr_vlog( RMR_VL_CRIT, "SI95: wait: bad global info struct magic number is wrong\n" );
return SI_ERROR;
@@
-97,7
+93,8
@@
extern int SIwait( struct ginfo_blk *gptr ) {
}
if( pstat > 0 && (! (gptr->flags & GIF_SHUTDOWN)) ) {
}
if( pstat > 0 && (! (gptr->flags & GIF_SHUTDOWN)) ) {
- for( tpptr = gptr->tplist; tpptr != NULL; tpptr = nextone ) {
+ tpptr = gptr->tplist;
+ while( tpptr != NULL ) {
nextone = tpptr->next; // prevent issues if we delete the block during loop
if( tpptr->fd >= 0 ) {
nextone = tpptr->next; // prevent issues if we delete the block during loop
if( tpptr->fd >= 0 ) {
@@
-127,22
+124,22
@@
extern int SIwait( struct ginfo_blk *gptr ) {
status = (*cbptr)( gptr->cbtab[SI_CB_DISC].cbdata, tpptr->fd );
SIcbstat( gptr, status, SI_CB_DISC ); // handle status
}
status = (*cbptr)( gptr->cbtab[SI_CB_DISC].cbdata, tpptr->fd );
SIcbstat( gptr, status, SI_CB_DISC ); // handle status
}
- SIterm( gptr, tpptr );
+ SIterm( gptr, tpptr );
// close FD and mark block for deletion
}
}
}
}
} // if still good fd
}
}
}
}
} // if still good fd
+
+ tpptr = nextone;
}
}
} while( gptr->tplist != NULL && !(gptr->flags & GIF_SHUTDOWN) );
free( ibuf );
if( gptr->tplist == NULL ) // indicate all fds closed
}
}
} while( gptr->tplist != NULL && !(gptr->flags & GIF_SHUTDOWN) );
free( ibuf );
if( gptr->tplist == NULL ) // indicate all fds closed
- gptr->sierr = SI_ERR_NOFDS;
if( gptr->flags & GIF_SHUTDOWN ) { // we need to stop for some reason
if( gptr->flags & GIF_SHUTDOWN ) { // we need to stop for some reason
- gptr->sierr = SI_ERR_SHUTD; // indicate error exit status
status = SI_ERROR; // status should indicate to user to die
SIshutdown( gptr ); // clean things up
} else {
status = SI_ERROR; // status should indicate to user to die
SIshutdown( gptr ); // clean things up
} else {