Loading media/libstagefright/rtsp/MyHandler.h +22 −11 Original line number Diff line number Diff line Loading @@ -478,21 +478,32 @@ struct MyHandler : public AHandler { sp<ARTSPResponse> response = static_cast<ARTSPResponse *>(obj.get()); if (response->mStatusCode == 302) { if (response->mStatusCode == 301 || response->mStatusCode == 302) { ssize_t i = response->mHeaders.indexOfKey("location"); CHECK_GE(i, 0); mSessionURL = response->mHeaders.valueAt(i); mOriginalSessionURL = response->mHeaders.valueAt(i); mSessionURL = mOriginalSessionURL; AString request; request = "DESCRIBE "; request.append(mSessionURL); request.append(" RTSP/1.0\r\n"); request.append("Accept: application/sdp\r\n"); request.append("\r\n"); // Strip any authentication info from the session url, we don't // want to transmit user/pass in cleartext. AString host, path, user, pass; unsigned port; if (ARTSPConnection::ParseURL( mSessionURL.c_str(), &host, &port, &path, &user, &pass) && user.size() > 0) { mSessionURL.clear(); mSessionURL.append("rtsp://"); mSessionURL.append(host); mSessionURL.append(":"); mSessionURL.append(StringPrintf("%u", port)); mSessionURL.append(path); sp<AMessage> reply = new AMessage('desc', id()); mConn->sendRequest(request.c_str(), reply); ALOGI("rewritten session url: '%s'", mSessionURL.c_str()); } sp<AMessage> reply = new AMessage('conn', id()); mConn->connect(mOriginalSessionURL.c_str(), reply); break; } Loading Loading
media/libstagefright/rtsp/MyHandler.h +22 −11 Original line number Diff line number Diff line Loading @@ -478,21 +478,32 @@ struct MyHandler : public AHandler { sp<ARTSPResponse> response = static_cast<ARTSPResponse *>(obj.get()); if (response->mStatusCode == 302) { if (response->mStatusCode == 301 || response->mStatusCode == 302) { ssize_t i = response->mHeaders.indexOfKey("location"); CHECK_GE(i, 0); mSessionURL = response->mHeaders.valueAt(i); mOriginalSessionURL = response->mHeaders.valueAt(i); mSessionURL = mOriginalSessionURL; AString request; request = "DESCRIBE "; request.append(mSessionURL); request.append(" RTSP/1.0\r\n"); request.append("Accept: application/sdp\r\n"); request.append("\r\n"); // Strip any authentication info from the session url, we don't // want to transmit user/pass in cleartext. AString host, path, user, pass; unsigned port; if (ARTSPConnection::ParseURL( mSessionURL.c_str(), &host, &port, &path, &user, &pass) && user.size() > 0) { mSessionURL.clear(); mSessionURL.append("rtsp://"); mSessionURL.append(host); mSessionURL.append(":"); mSessionURL.append(StringPrintf("%u", port)); mSessionURL.append(path); sp<AMessage> reply = new AMessage('desc', id()); mConn->sendRequest(request.c_str(), reply); ALOGI("rewritten session url: '%s'", mSessionURL.c_str()); } sp<AMessage> reply = new AMessage('conn', id()); mConn->connect(mOriginalSessionURL.c_str(), reply); break; } Loading