# HG changeset patch # User rbultje # Date 1231340147 0 # Node ID 619845a9bab3fa12a06c68a859bcb1a81f8d16fb # Parent 0ebf63d12ea4c2e664e0e5050f7087b105eef378 Use the "server" RTSP field to detect whether the server that we're talking to is a Microsoft Windows Media Server (the field will be "WMServer/version"). See "[PATCH] RTSP-MS 3/15: Add Windows Media Server type" thread on mailinglist. diff -r 0ebf63d12ea4 -r 619845a9bab3 rtsp.c --- a/rtsp.c Wed Jan 07 14:53:04 2009 +0000 +++ b/rtsp.c Wed Jan 07 14:55:47 2009 +0000 @@ -688,6 +688,9 @@ } else if (av_stristart(p, "RealChallenge1:", &p)) { skip_spaces(&p); av_strlcpy(reply->real_challenge, p, sizeof(reply->real_challenge)); + } else if (av_stristart(p, "Server:", &p)) { + skip_spaces(&p); + av_strlcpy(reply->server, p, sizeof(reply->server)); } } @@ -1123,6 +1126,8 @@ if (rt->server_type != RTSP_SERVER_REAL && reply->real_challenge[0]) { rt->server_type = RTSP_SERVER_REAL; continue; + } else if (!strncasecmp(reply->server, "WMServer/", 9)) { + rt->server_type = RTSP_SERVER_WMS; } else if (rt->server_type == RTSP_SERVER_REAL) { strcpy(real_challenge, reply->real_challenge); } diff -r 0ebf63d12ea4 -r 619845a9bab3 rtsp.h --- a/rtsp.h Wed Jan 07 14:53:04 2009 +0000 +++ b/rtsp.h Wed Jan 07 14:55:47 2009 +0000 @@ -66,6 +66,7 @@ int seq; /**< sequence number */ char session_id[512]; char real_challenge[64]; /**< the RealChallenge1 field from the server */ + char server[64]; } RTSPHeader; enum RTSPClientState { @@ -77,6 +78,7 @@ enum RTSPServerType { RTSP_SERVER_RTP, /*< Standard-compliant RTP-server */ RTSP_SERVER_REAL, /*< Realmedia-style server */ + RTSP_SERVER_WMS, /*< Windows Media server */ RTSP_SERVER_LAST };