void ProxyRTSPClient::continueAfterLivenessCommand(int resultCode, Boolean serverSupportsGetParameter) { if (resultCode != 0) { // The periodic 'liveness' command failed, suggesting that the back-end stream is no longer alive. // We handle this by resetting our connection state with this server. Any current clients will be closed, but // subsequent clients will cause new RTSP "SETUP"s and "PLAY"s to get done, restarting the stream. // Then continue by sending more "DESCRIBE" commands, to try to restore the stream. fServerSupportsGetParameter = False; // until we learn otherwise, in response to a future "OPTIONS" command if (resultCode < 0) { // The 'liveness' command failed without getting a response from the server (otherwise "resultCode" would have been > 0). // This suggests that the RTSP connection itself has failed. Print this error code, in case it's useful for debugging: if (fVerbosityLevel > 0) { envir() << *this << ": lost connection to server ('errno': " << -resultCode << "). Resetting...\n"; } } reset(); fOurServerMediaSession.resetDESCRIBEState(); setBaseURL(fOurURL); // because we'll be sending an initial "DESCRIBE" all over again sendDESCRIBE(this); return; } fServerSupportsGetParameter = serverSupportsGetParameter; // Schedule the next 'liveness' command (i.e., to tell the back-end server that we're still alive): scheduleLivenessCommand(); }
CDownload::CDownload(const char* _baseURL) { requiredExt = NULL; bTestOnly = false; bNotifyDownloadFailure = true; #if defined(DRIVER_ANDROID) fromMainThread = true; #endif setBaseURL(_baseURL); }
RTSPRegisterOrDeregisterSender ::RTSPRegisterOrDeregisterSender(UsageEnvironment& env, char const* remoteClientNameOrAddress, portNumBits remoteClientPortNum, Authenticator* authenticator, int verbosityLevel, char const* applicationName) : RTSPClient(env, NULL, verbosityLevel, applicationName, 0, -1), fRemoteClientPortNum(remoteClientPortNum) { // Set up a connection to the remote client. To do this, we create a fake "rtsp://" URL for it: char const* fakeRTSPURLFmt = "rtsp://%s:%u/"; unsigned fakeRTSPURLSize = strlen(fakeRTSPURLFmt) + strlen(remoteClientNameOrAddress) + 5/* max port num len */; char* fakeRTSPURL = new char[fakeRTSPURLSize]; sprintf(fakeRTSPURL, fakeRTSPURLFmt, remoteClientNameOrAddress, remoteClientPortNum); setBaseURL(fakeRTSPURL); delete[] fakeRTSPURL; if (authenticator != NULL) fCurrentAuthenticator = *authenticator; }
void ProjectNewGeneral::slotLinePrjFile( const QString & ) { bool valid = !(linePrjFile->text().isEmpty() || linePrjName->text().isEmpty() || linePrjDir ->text().isEmpty() || linePrjTmpl->text().isEmpty() || linePrjToolbar->text().isEmpty()); KURL url; QString s = lineHost->text(); if (! s.isEmpty()) url.setHost(s); s = lineUser->text(); if (! s.isEmpty()) url.setUser(s); s = linePasswd->text(); if (! s.isEmpty()) url.setPass(s); s = linePort->text(); if (! s.isEmpty()) url.setPort(linePort->text().toInt()); url.setProtocol(comboProtocol->currentText()); if (url.protocol() == i18n("Local")) url.setProtocol("file"); url.setPath(linePrjDir->text()); url.adjustPath(1); if (!url.path().startsWith("/")) url.setPath("/"+url.path()); if (url.isValid()) { emit setBaseURL(url); baseUrl = url; if (baseUrl.isLocalFile()) { s = QExtFileInfo::canonicalPath(baseUrl.path()); if (!s.isEmpty()) baseUrl.setPath(s); } } emit enableNextButton( this, valid ); }
Boolean RTSPRegisterSender::setRequestFields(RequestRecord* request, char*& cmdURL, Boolean& cmdURLWasAllocated, char const*& protocolStr, char*& extraHeaders, Boolean& extraHeadersWereAllocated) { if (strcmp(request->commandName(), "REGISTER") == 0) { RequestRecord_REGISTER* request_REGISTER = (RequestRecord_REGISTER*) request; setBaseURL(request_REGISTER->rtspURLToRegister()); cmdURL = (char*)url(); cmdURLWasAllocated = False; // Generate the "Transport:" header that will contain our REGISTER-specific parameters. This will be "extraHeaders". // First, generate the "proxy_url_suffix" parameter string, if any: char* proxyURLSuffixParameterStr; if (request_REGISTER->proxyURLSuffix() == NULL) { proxyURLSuffixParameterStr = strDup(""); } else { char const* proxyURLSuffixParameterFmt = "; proxy_url_suffix=%s"; unsigned proxyURLSuffixParameterSize = strlen(proxyURLSuffixParameterFmt) + strlen(request_REGISTER->proxyURLSuffix()); proxyURLSuffixParameterStr = new char[proxyURLSuffixParameterSize]; sprintf(proxyURLSuffixParameterStr, proxyURLSuffixParameterFmt, request_REGISTER->proxyURLSuffix()); } char const* transportHeaderFmt = "Transport: %spreferred_delivery_protocol=%s%s\r\n"; unsigned transportHeaderSize = strlen(transportHeaderFmt) + 100/*conservative*/ + strlen(proxyURLSuffixParameterStr); char* transportHeaderStr = new char[transportHeaderSize]; sprintf(transportHeaderStr, transportHeaderFmt, request_REGISTER->reuseConnection() ? "reuse_connection; " : "", request_REGISTER->requestStreamingViaTCP() ? "interleaved" : "udp", proxyURLSuffixParameterStr); delete[] proxyURLSuffixParameterStr; extraHeaders = transportHeaderStr; extraHeadersWereAllocated = True; return True; } else { return RTSPClient::setRequestFields(request, cmdURL, cmdURLWasAllocated, protocolStr, extraHeaders, extraHeadersWereAllocated); } }
RTSPRegisterSender ::RTSPRegisterSender(UsageEnvironment& env, char const* remoteClientNameOrAddress, portNumBits remoteClientPortNum, char const* rtspURLToRegister, RTSPClient::responseHandler* rtspResponseHandler, Authenticator* authenticator, Boolean requestStreamingViaTCP, char const* proxyURLSuffix, Boolean reuseConnection, int verbosityLevel, char const* applicationName) : RTSPClient(env, NULL, verbosityLevel, applicationName, 0, -1), fRemoteClientPortNum(remoteClientPortNum) { // Set up a connection to the remote client. To do this, we create a fake "rtsp://" URL for it: char const* fakeRTSPURLFmt = "rtsp://%s:%u/"; unsigned fakeRTSPURLSize = strlen(fakeRTSPURLFmt) + strlen(remoteClientNameOrAddress) + 5/* max port num len */; char* fakeRTSPURL = new char[fakeRTSPURLSize]; sprintf(fakeRTSPURL, fakeRTSPURLFmt, remoteClientNameOrAddress, remoteClientPortNum); setBaseURL(fakeRTSPURL); delete[] fakeRTSPURL; // Send the "REGISTER" request: if (authenticator != NULL) fCurrentAuthenticator = *authenticator; (void)sendRequest(new RequestRecord_REGISTER(++fCSeq, rtspResponseHandler, rtspURLToRegister, reuseConnection, requestStreamingViaTCP, proxyURLSuffix)); }
Boolean RTSPDeregisterSender::setRequestFields(RequestRecord* request, char*& cmdURL, Boolean& cmdURLWasAllocated, char const*& protocolStr, char*& extraHeaders, Boolean& extraHeadersWereAllocated) { if (strcmp(request->commandName(), "DEREGISTER") == 0) { RequestRecord_DEREGISTER* request_DEREGISTER = (RequestRecord_DEREGISTER*)request; setBaseURL(request_DEREGISTER->rtspURLToDeregister()); cmdURL = (char*)url(); cmdURLWasAllocated = False; // Generate the "Transport:" header that will contain our DEREGISTER-specific parameters. This will be "extraHeaders". // First, generate the "proxy_url_suffix" parameter string, if any: char* proxyURLSuffixParameterStr; if (request_DEREGISTER->proxyURLSuffix() == NULL) { proxyURLSuffixParameterStr = strDup(""); } else { char const* proxyURLSuffixParameterFmt = "proxy_url_suffix=%s"; unsigned proxyURLSuffixParameterSize = strlen(proxyURLSuffixParameterFmt) + strlen(request_DEREGISTER->proxyURLSuffix()); proxyURLSuffixParameterStr = new char[proxyURLSuffixParameterSize]; sprintf(proxyURLSuffixParameterStr, proxyURLSuffixParameterFmt, request_DEREGISTER->proxyURLSuffix()); } char const* transportHeaderFmt = "Transport: %s\r\n"; unsigned transportHeaderSize = strlen(transportHeaderFmt) + strlen(proxyURLSuffixParameterStr); char* transportHeaderStr = new char[transportHeaderSize]; sprintf(transportHeaderStr, transportHeaderFmt, proxyURLSuffixParameterStr); delete[] proxyURLSuffixParameterStr; extraHeaders = transportHeaderStr; extraHeadersWereAllocated = True; return True; } else { return RTSPClient::setRequestFields(request, cmdURL, cmdURLWasAllocated, protocolStr, extraHeaders, extraHeadersWereAllocated); } }