Thanks for the report. Yes, there is a bug in that code, although it wasn't quite what you thought. Try replacing those two "for" loops with the following:
for (StreamReplica* r1 = fReplicasAwaitingCurrentFrame; r1 != NULL;) { if (r1 == replicaBeingDeactivated) { if (r1 == fReplicasAwaitingCurrentFrame) fReplicasAwaitingCurrentFrame = r1->fNext; r1 = r1->fNext; replicaBeingDeactivated->fNext = NULL; break; } else { r1 = r1->fNext; } } for (StreamReplica* r2 = fReplicasAwaitingNextFrame; r2 != NULL;) { if (r2 == replicaBeingDeactivated) { if (r2 == fReplicasAwaitingNextFrame) fReplicasAwaitingNextFrame = r2->fNext; r2 = r2->fNext; replicaBeingDeactivated->fNext = NULL; break; } else { r2 = r2->fNext; } } } If you find any problem with this, then please let us know ASAP. Otherwise I'll release a new version of the code with this change. Ross Finlayson Live Networks, Inc. http://www.live555.com/
_______________________________________________ live-devel mailing list live-devel@lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel