Originally committed as revision 26189 to svn://svn.ffmpeg.org/ffmpeg/trunktags/n0.8
| @@ -758,7 +758,7 @@ void ff_rtsp_skip_packet(AVFormatContext *s) | |||||
| int ff_rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply, | int ff_rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply, | ||||
| unsigned char **content_ptr, | unsigned char **content_ptr, | ||||
| int return_on_interleaved_data) | |||||
| int return_on_interleaved_data, const char *method) | |||||
| { | { | ||||
| RTSPState *rt = s->priv_data; | RTSPState *rt = s->priv_data; | ||||
| char buf[4096], buf1[1024], *q; | char buf[4096], buf1[1024], *q; | ||||
| @@ -936,7 +936,7 @@ retry: | |||||
| send_content_length))) | send_content_length))) | ||||
| return ret; | return ret; | ||||
| if ((ret = ff_rtsp_read_reply(s, reply, content_ptr, 0) ) < 0) | |||||
| if ((ret = ff_rtsp_read_reply(s, reply, content_ptr, 0, method) ) < 0) | |||||
| return ret; | return ret; | ||||
| if (reply->status_code == 401 && cur_auth_type == HTTP_AUTH_NONE && | if (reply->status_code == 401 && cur_auth_type == HTTP_AUTH_NONE && | ||||
| @@ -1512,7 +1512,7 @@ static int udp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st, | |||||
| if (tcp_fd != -1 && FD_ISSET(tcp_fd, &rfds)) { | if (tcp_fd != -1 && FD_ISSET(tcp_fd, &rfds)) { | ||||
| RTSPMessageHeader reply; | RTSPMessageHeader reply; | ||||
| ret = ff_rtsp_read_reply(s, &reply, NULL, 0); | |||||
| ret = ff_rtsp_read_reply(s, &reply, NULL, 0, NULL); | |||||
| if (ret < 0) | if (ret < 0) | ||||
| return ret; | return ret; | ||||
| /* XXX: parse message */ | /* XXX: parse message */ | ||||
| @@ -434,13 +434,15 @@ int ff_rtsp_send_cmd(AVFormatContext *s, const char *method, | |||||
| * data packets (if they are encountered), until a reply | * data packets (if they are encountered), until a reply | ||||
| * has been fully parsed. If no more data is available | * has been fully parsed. If no more data is available | ||||
| * without parsing a reply, it will return an error. | * without parsing a reply, it will return an error. | ||||
| * @param method the RTSP method this is a reply to. This affects how | |||||
| * some response headers are acted upon. May be NULL. | |||||
| * | * | ||||
| * @return 1 if a data packets is ready to be received, -1 on error, | * @return 1 if a data packets is ready to be received, -1 on error, | ||||
| * and 0 on success. | * and 0 on success. | ||||
| */ | */ | ||||
| int ff_rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply, | int ff_rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply, | ||||
| unsigned char **content_ptr, | unsigned char **content_ptr, | ||||
| int return_on_interleaved_data); | |||||
| int return_on_interleaved_data, const char *method); | |||||
| /** | /** | ||||
| * Skip a RTP/TCP interleaved packet. | * Skip a RTP/TCP interleaved packet. | ||||
| @@ -170,7 +170,7 @@ redo: | |||||
| for (;;) { | for (;;) { | ||||
| RTSPMessageHeader reply; | RTSPMessageHeader reply; | ||||
| ret = ff_rtsp_read_reply(s, &reply, NULL, 1); | |||||
| ret = ff_rtsp_read_reply(s, &reply, NULL, 1, NULL); | |||||
| if (ret < 0) | if (ret < 0) | ||||
| return ret; | return ret; | ||||
| if (ret == 1) /* received '$' */ | if (ret == 1) /* received '$' */ | ||||
| @@ -195,7 +195,7 @@ static int rtsp_write_packet(AVFormatContext *s, AVPacket *pkt) | |||||
| * since it would block and wait for an RTSP reply on the socket | * since it would block and wait for an RTSP reply on the socket | ||||
| * (which may not be coming any time soon) if it handles | * (which may not be coming any time soon) if it handles | ||||
| * interleaved packets internally. */ | * interleaved packets internally. */ | ||||
| ret = ff_rtsp_read_reply(s, &reply, NULL, 1); | |||||
| ret = ff_rtsp_read_reply(s, &reply, NULL, 1, NULL); | |||||
| if (ret < 0) | if (ret < 0) | ||||
| return AVERROR(EPIPE); | return AVERROR(EPIPE); | ||||
| if (ret == 1) | if (ret == 1) | ||||