Forum Discussion
albert_forster_
Nimbostratus
Apr 05, 2005relate_client & relate_server
We use TCP::collect and TCP::payload to gather the initial OPTIONS command. Then use TCP::respond to send an options response back to the client. With TCP::collect and TCP::payload we get the DESCRIBE request from the client. A TCP::release to send the DESCRIBE request (data from TCP::collect) to the server. The DESCRIBE is answered (RTSP OK) by the server.
Obviously no UDP connection can be established, so the client sends a TEARDOWN request after a timeout. For the proposed relate_client/relate_server commands no documantion can be found, so we don't even know the syntax.
Furthermore it seems, that the TCP::respond triggers a TCP::release and sends the OPTIONS command to the server, so the client receives two RTSP OK responds (one from TCP::respond and one from the server), both with CSeq: 1.
when CLIENT_ACCEPTED {
set i 0
TCP::collect
}
when CLIENT_DATA {
if { [TCP::payload] contains "CSeq: 1" and $i < 1}
{
set i 1
TCP::respond "RTSP/1.0 200 OK\r
CSeq: 1\r
Date: Mon, 04 Apr 2005 11:15:56 GMT\r
Server: Helix Mobile Server Version 10.0.5.1621 (sunos-5.8-sparc-server) (RealServer compatible)\r
Public: OPTIONS, DESCRIBE, ANNOUNCE, PLAY, SETUP, GET_PARAMETER, SET_PARAMETER, TEARDOWN\r
RealChallenge1: 162a2d05500ae08260f6c0cb21e37855\r
StatsMask: 7\r
\r
"
TCP::collect
}
if { [TCP::payload] contains "transid" }
{
set desc [findstr [TCP::payload] "transid" 8 7]
log "desc: $desc"
TCP::release
}
}
- drteeth_127330Historic F5 AccountI performed a simple test and was unable to reproduce any problems with TCP::response triggering a release. Additionally, the TCP::collect in CLIENT_DATA is also unnecessary since you already set TCP::collect in CLIENT_ACCEPTED; however, that does not trigger a release either.
relate_{client|server} { proto clientflow serverflow }
- unRuleY_95363Historic F5 AccountI think the problem with the OPTIONS command is that the command is still in the buffer. So, when you do eventually get the "transid" string, both the OPTIONS and the DESCRIBE end up going to the server.
TCP::payload replace ""
TCP::payload replace 0 [TCP::payload length] ""
- unRuleY_95363Historic F5 AccountBTW, Dr.Teeth's comments about the TCP::collect/TCP::release might seem confusing, so here's some further notes about the TCP::collect & TCP::release commands:
- Yepher_100160
Nimbostratus
Does anyone have any idea how to use "relate_client" and "relate_server"?
Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects