static int sendReceiveAndCheck(GstRTSPConnection *conn, GTimeVal *timeout, GstRTSPMessage *msg , gboolean debug ) { GstRTSPResult res; if (debug) gst_rtsp_message_dump(msg); // set our request if ( (res = gst_rtsp_connection_send(conn, msg, timeout)) != GST_RTSP_OK) return -ERR_CONNECTION; // get server responce if ( (res = gst_rtsp_connection_receive(conn, msg, timeout)) != GST_RTSP_OK) return -ERR_CONNECTION; if (debug) gst_rtsp_message_dump(msg); res = isServerReturnOkResponse(msg); if (res != GST_RTSP_OK) return res; return GST_RTSP_OK; }
void* rtsp (void *arg) { GstRTSPResult res; GstRTSPMessage *msg; int fd = (int)arg; GstRtspParser *parser = gst_rtsp_parser_new(4096, NULL); while (1) { fd_set rset; FD_ZERO(&rset); FD_SET(fd, &rset); if (select (fd +1, &rset, NULL, NULL, NULL) < 0) { perror("select()"); exit(1); }; res = gst_rtsp_parser_recv(parser, fd, &msg); if (res == GST_RTSP_OK) { gst_rtsp_message_dump(msg); } else if (res == GST_RTSP_EEOF) { printf("################## connection reset!!\n"); close(fd); gst_rtsp_parser_free(parser); break; } else if (res == GST_RTSP_EINTR) { printf("================= eintr!!\n"); } else { printf("$$$$$$$$$$$$$$$other error!!!\n"); } } return NULL; }