int srv_rtsp_proc(CLIENT_CONN_T *pConn, const unsigned char *prebuf, unsigned int prebufsz) { int rc = 0; RTSP_REQ_CTXT_T rtspCtxt; char tmps[2][128]; if(!pConn) { return -1; } if(!(pConn->pListenCfg->urlCapabilities & URL_CAP_RTSPLIVE)) { LOG(X_ERROR("Listener %s:%d not enabled for rtsp%s stream to %s:%d"), FORMAT_NETADDR(pConn->pListenCfg->sa, tmps[1], sizeof(tmps[1])), ntohs(INET_PORT(pConn->pListenCfg->sa)), (pConn->sd.netsocket.flags & NETIO_FLAG_SSL_TLS) ? "s" : "", FORMAT_NETADDR(pConn->sd.sa, tmps[0], sizeof(tmps[0])), ntohs(INET_PORT(pConn->sd.sa))); return -1; } memset(&rtspCtxt, 0, sizeof(rtspCtxt)); rtspCtxt.pSd = &pConn->sd; rtspCtxt.pListenCfg = pConn->pListenCfg; if(pConn->pStreamerCfg0 && pConn->pStreamerCfg0->running >= 0) { rtspCtxt.pStreamerCfg = (STREAMER_CFG_T *) pConn->pStreamerCfg0; } else if(pConn->pStreamerCfg1 && pConn->pStreamerCfg1->running >= 0) { rtspCtxt.pStreamerCfg = (STREAMER_CFG_T *) pConn->pStreamerCfg1; } rtspCtxt.prebufdata = (unsigned char *) prebuf; rtspCtxt.prebufsz = prebufsz; if(rtspCtxt.pStreamerCfg && ((STREAMER_CFG_T *)rtspCtxt.pStreamerCfg)->pRtspSessions) { rtsp_handle_conn(&rtspCtxt); } netio_closesocket(&pConn->sd.netsocket); LOG(X_DEBUG("RTSP connection thread ended %s:%d"), FORMAT_NETADDR(pConn->sd.sa, tmps[0], sizeof(tmps[0])), ntohs(INET_PORT(pConn->sd.sa))); return rc; }
static void srv_rtsp_proc(void *pfuncarg) { CLIENT_CONN_T *pConn = (CLIENT_CONN_T *) pfuncarg; char buf[SAFE_INET_NTOA_LEN_MAX]; RTSP_REQ_CTXT_T rtspCtxt; memset(&rtspCtxt, 0, sizeof(rtspCtxt)); rtspCtxt.pSd = &pConn->sd; rtspCtxt.pListenCfg = pConn->pListenCfg; if(pConn->pStreamerCfg0 && pConn->pStreamerCfg0->running >= 0) { rtspCtxt.pStreamerCfg = (STREAMER_CFG_T *) pConn->pStreamerCfg0; } else if(pConn->pStreamerCfg1 && pConn->pStreamerCfg1->running >= 0) { rtspCtxt.pStreamerCfg = (STREAMER_CFG_T *) pConn->pStreamerCfg1; } if(rtspCtxt.pStreamerCfg && ((STREAMER_CFG_T *)rtspCtxt.pStreamerCfg)->pRtspSessions) { rtsp_handle_conn(&rtspCtxt); } netio_closesocket(&pConn->sd.netsocket); LOG(X_DEBUG("RTSP connection thread ended %s:%d"), net_inet_ntoa(pConn->sd.sain.sin_addr, buf), ntohs(pConn->sd.sain.sin_port)); }