[Live-devel] Add a "reason for leaving" in RTCP Bye packet

Ross Finlayson finlayson at live555.com
Mon Dec 10 10:53:11 PST 2018


> For our project we would have the requirements to make a distinction between different use cases of RTSP server closures from the client’s side: session shutdown for load balancing, priority management on stream access, …
> For that I was thinking about using the “reason for leaving” of the RTCP BYE sending, an optional field in the RFC 3550.
>  
> My plan is to change the RTCPInstance::sendBYE for the sending

Yes, sounds good - provided, of course, that the ‘reason’ is an optional parameter, and that omitting this means “don’t include a reason”, as at present.


> and the RTCPInstance ::setByeHandler () to get that reason.

Hmmm…  Right now I’m wondering how that could be done in a backwards-compatible way, because currently “setByeHandler()” takes, as parameter, a “TaskFunc*” for the handler function, where “TaskFunc” is defined as
	typedef void TaskFunc(void* clientData);
I.e., there’s no way to pass the ‘reason’ to the handler function.

I think we’d have to change “setByeHandler()” to take, instead, a “ByeHandlerFunc*” as parameter, where we define “ByeHandlerFunc” to be something like:
	typedef void ByeHandlerFunc(void* clientData, char const* byeReason = NULL);
Note that “byeReason” is an optional parameter.  I *think* that would be backwards compatible with existing code that calls “setByeHandler()” (it would, of course, need to be recompiled).

If you have any other idea, let me know.


Ross Finlayson
Live Networks, Inc.
http://www.live555.com/




More information about the live-devel mailing list