Lines Matching full:server

1 /*  RTMP Proxy Server
23 /* This is a Proxy Server that displays the connection parameters from a
101 STREAMING_SERVER *rtmpServer = 0; // server structure pointer
104 void stopStreaming(STREAMING_SERVER * server);
154 static const char *cst[] = { "client", "server" };
158 ServeInvoke(STREAMING_SERVER *server, int which, RTMPPacket *pack, const char *body) in ServeInvoke() argument
205 server->rc.Link.app = pval; in ServeInvoke()
210 server->rc.Link.flashVer = pval; in ServeInvoke()
217 RTMP_HashSWF(pval.av_val, &server->rc.Link.SWFSize, in ServeInvoke()
218 (unsigned char *)server->rc.Link.SWFHash, 30); in ServeInvoke()
220 server->rc.Link.swfUrl = pval; in ServeInvoke()
228 server->rc.Link.tcUrl = pval; in ServeInvoke()
236 server->rc.Link.protocol = RTMP_PROTOCOL_RTMP; in ServeInvoke()
241 server->rc.Link.protocol = RTMP_PROTOCOL_RTMPE; in ServeInvoke()
252 server->rc.Link.hostname.av_val = r2; in ServeInvoke()
256 server->rc.Link.hostname.av_len = r1 - r2; in ServeInvoke()
258 server->rc.Link.port = atoi(r1); in ServeInvoke()
262 server->rc.Link.hostname.av_len = len; in ServeInvoke()
263 server->rc.Link.port = 1935; in ServeInvoke()
270 server->rc.Link.pageUrl = pval; in ServeInvoke()
275 server->rc.m_fAudioCodecs = cobj.o_props[i].p_vu.p_number; in ServeInvoke()
279 server->rc.m_fVideoCodecs = cobj.o_props[i].p_vu.p_number; in ServeInvoke()
283 server->rc.m_fEncoding = cobj.o_props[i].p_vu.p_number; in ServeInvoke()
284 server->rc.m_bSendEncoding = TRUE; in ServeInvoke()
293 server->rc.Link.lFlags |= RTMP_LF_AUTH; in ServeInvoke()
296 AMFProp_GetString(&obj.o_props[4], &server->rc.Link.auth); in ServeInvoke()
300 if (!RTMP_Connect(&server->rc, pack)) in ServeInvoke()
305 server->rc.m_bSendCounter = FALSE; in ServeInvoke()
320 server->rc.m_stream_id = pack->m_nInfoField2; in ServeInvoke()
322 server->rc.Link.playpath = av; in ServeInvoke()
327 for (fl = server->f_head; fl; fl=fl->f_next) in ServeInvoke()
376 server->rc.Link.playpath.av_len, server->rc.Link.playpath.av_val, in ServeInvoke()
385 av = server->rc.Link.playpath; in ServeInvoke()
393 if (server->f_tail) in ServeInvoke()
394 server->f_tail->f_next = fl; in ServeInvoke()
396 server->f_head = fl; in ServeInvoke()
397 server->f_tail = fl; in ServeInvoke()
420 if (server->f_cur) in ServeInvoke()
422 if (server->f_cur->f_next) in ServeInvoke()
423 server->f_cur = server->f_cur->f_next; in ServeInvoke()
427 for (server->f_cur = server->f_head; server->f_cur && in ServeInvoke()
428 !server->f_cur->f_file; server->f_cur = server->f_cur->f_next) ; in ServeInvoke()
430 server->rc.m_bPlaying = TRUE; in ServeInvoke()
446 RTMP_Close(&server->rc); in ServeInvoke()
455 ServePacket(STREAMING_SERVER *server, int which, RTMPPacket *packet) in ServePacket() argument
479 // server bw in ServePacket()
509 ret = ServeInvoke(server, which, packet, packet->m_body + 1); in ServePacket()
522 ret = ServeInvoke(server, which, packet, packet->m_body); in ServePacket()
733 TFTYPE doServe(void *arg) // server socket and state (our listening socket) in doServe()
735 STREAMING_SERVER *server = arg; in doServe() local
741 int sockfd = server->socket; in doServe()
747 server->state = STREAMING_IN_PROGRESS; in doServe()
762 RTMP_Init(&server->rs); in doServe()
763 RTMP_Init(&server->rc); in doServe()
764 server->rs.m_sb.sb_socket = sockfd; in doServe()
765 if (!RTMP_Serve(&server->rs)) in doServe()
775 while (RTMP_IsConnected(&server->rs) && RTMP_ReadPacket(&server->rs, &ps)) in doServe()
779 ServePacket(server, 0, &ps); in doServe()
781 if (RTMP_IsConnected(&server->rc)) in doServe()
788 server->rc.Link.timeout = 10; in doServe()
789 server->rs.Link.timeout = 10; in doServe()
790 while (RTMP_IsConnected(&server->rs) || RTMP_IsConnected(&server->rc)) in doServe()
795 cr = server->rc.m_sb.sb_size; in doServe()
796 sr = server->rs.m_sb.sb_size; in doServe()
803 n = server->rs.m_sb.sb_socket; in doServe()
804 if (server->rc.m_sb.sb_socket > n) in doServe()
805 n = server->rc.m_sb.sb_socket; in doServe()
807 if (RTMP_IsConnected(&server->rs)) in doServe()
809 if (RTMP_IsConnected(&server->rc)) in doServe()
810 FD_SET(server->rc.m_sb.sb_socket, &rfds); in doServe()
813 tv.tv_sec = server->f_cur ? 30 : 60; in doServe()
818 if (server->f_cur && server->rc.m_mediaChannel && !paused) in doServe()
820server->rc.m_pauseStamp = server->rc.m_channelTimestamp[server->rc.m_mediaChannel]; in doServe()
821 if (RTMP_ToggleStream(&server->rc)) in doServe()
830 if (server->rs.m_sb.sb_socket > 0 && in doServe()
831 FD_ISSET(server->rs.m_sb.sb_socket, &rfds)) in doServe()
833 if (server->rc.m_sb.sb_socket > 0 && in doServe()
834 FD_ISSET(server->rc.m_sb.sb_socket, &rfds)) in doServe()
839 while (RTMP_ReadPacket(&server->rs, &ps)) in doServe()
847 server->rs.m_inChunkSize = AMF_DecodeInt32(ps.m_body); in doServe()
849 server->rs.m_inChunkSize); in doServe()
850 server->rc.m_outChunkSize = server->rs.m_inChunkSize; in doServe()
893 if (ServePacket(server, 0, &ps) && server->f_cur) in doServe()
895 fclose(server->f_cur->f_file); in doServe()
896 server->f_cur->f_file = NULL; in doServe()
897 server->f_cur = NULL; in doServe()
900 RTMP_SendPacket(&server->rc, &ps, FALSE); in doServe()
907 while (RTMP_ReadPacket(&server->rc, &pc)) in doServe()
914 if (pc.m_nTimeStamp <= server->rc.m_mediaStamp) in doServe()
917 server->rc.m_pausing = 0; in doServe()
924 server->rc.m_inChunkSize = AMF_DecodeInt32(pc.m_body); in doServe()
925 … RTMP_Log(RTMP_LOGDEBUG, "%s, server: chunk size change to %d", __FUNCTION__, in doServe()
926 server->rc.m_inChunkSize); in doServe()
927 server->rs.m_outChunkSize = server->rc.m_inChunkSize; in doServe()
936 if (server->rc.Link.SWFSize) in doServe()
938 RTMP_SendCtrl(&server->rc, 0x1b, 0, 0); in doServe()
943 …RTMP_Log(RTMP_LOGERROR, "%s, server requested SWF verification, need CRYPTO support! ", __FUNCTION… in doServe()
946 else if (server->f_cur && ( in doServe()
951 RTMP_ClientPacket(&server->rc, &pc)) in doServe()
953 int len = WriteStream(&buf, &buflen, &server->stamp, &pc); in doServe()
954 if (len > 0 && fwrite(buf, 1, len, server->f_cur->f_file) != len) in doServe()
960 if (ServePacket(server, 1, &pc) && server->f_cur) in doServe()
962 fclose(server->f_cur->f_file); in doServe()
963 server->f_cur->f_file = NULL; in doServe()
964 server->f_cur = NULL; in doServe()
968 if (sendit && RTMP_IsConnected(&server->rs)) in doServe()
969 RTMP_SendChunk(&server->rs, &rk); in doServe()
975 if (!RTMP_IsConnected(&server->rs) && RTMP_IsConnected(&server->rc) in doServe()
976 && !server->f_cur) in doServe()
977 RTMP_Close(&server->rc); in doServe()
982 RTMP_Close(&server->rs); in doServe()
983 RTMP_Close(&server->rc); in doServe()
984 while (server->f_head) in doServe()
986 Flist *fl = server->f_head; in doServe()
987 server->f_head = fl->f_next; in doServe()
992 server->f_tail = NULL; in doServe()
993 server->f_cur = NULL; in doServe()
996 server->rc.Link.hostname.av_val = NULL; in doServe()
997 server->rc.Link.tcUrl.av_val = NULL; in doServe()
998 server->rc.Link.swfUrl.av_val = NULL; in doServe()
999 server->rc.Link.pageUrl.av_val = NULL; in doServe()
1000 server->rc.Link.app.av_val = NULL; in doServe()
1001 server->rc.Link.auth.av_val = NULL; in doServe()
1002 server->rc.Link.flashVer.av_val = NULL; in doServe()
1006 if (server->state == STREAMING_IN_PROGRESS) in doServe()
1007 server->state = STREAMING_ACCEPTING; in doServe()
1015 STREAMING_SERVER *server = arg; in serverThread() local
1016 server->state = STREAMING_ACCEPTING; in serverThread()
1018 while (server->state == STREAMING_ACCEPTING) in serverThread()
1024 accept(server->socket, (struct sockaddr *) &addr, &addrlen); in serverThread()
1040 *srv2 = *server; in serverThread()
1051 server->state = STREAMING_STOPPED; in serverThread()
1060 STREAMING_SERVER *server; in startStreaming() local
1092 server = (STREAMING_SERVER *) calloc(1, sizeof(STREAMING_SERVER)); in startStreaming()
1093 server->socket = sockfd; in startStreaming()
1095 ThreadCreate(serverThread, server); in startStreaming()
1097 return server; in startStreaming()
1101 stopStreaming(STREAMING_SERVER * server) in stopStreaming() argument
1103 assert(server); in stopStreaming()
1105 if (server->state != STREAMING_STOPPED) in stopStreaming()
1107 int fd = server->socket; in stopStreaming()
1108 server->socket = 0; in stopStreaming()
1109 if (server->state == STREAMING_IN_PROGRESS) in stopStreaming()
1111 server->state = STREAMING_STOPPING; in stopStreaming()
1114 while (server->state != STREAMING_STOPPED) in stopStreaming()
1122 server->state = STREAMING_STOPPED; in stopStreaming()
1142 // rtmp streaming server in main()
1148 RTMP_LogPrintf("RTMP Proxy Server %s\n", RTMPDUMP_VERSION); in main()
1175 RTMP_Log(RTMP_LOGERROR, "Failed to start RTMP server, exiting!"); in main()