changeset 6677:0b3d4b298056

Fixed the asf http authentication.
author bertrand
date Tue, 09 Jul 2002 08:26:34 +0000
parents a957cc0b89a4
children c7cfaa38cafb
files libmpdemux/asf_streaming.c
diffstat 1 files changed, 14 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/libmpdemux/asf_streaming.c	Tue Jul 09 08:23:47 2002 +0000
+++ b/libmpdemux/asf_streaming.c	Tue Jul 09 08:26:34 2002 +0000
@@ -552,9 +552,14 @@
 		mp_msg(MSGT_NETWORK,MSGL_ERR,"Failed to parse HTTP response\n");
 		return -1;
 	}
-	if( http_hdr->status_code!=200 ) {
-		mp_msg(MSGT_NETWORK,MSGL_ERR,"Server return %d:%s\n", http_hdr->status_code, http_hdr->reason_phrase);
-		return -1;
+	switch( http_hdr->status_code ) {
+		case 200:
+			break;
+		case 401: // Authentication required
+			return ASF_Authenticate_e;
+		default:
+			mp_msg(MSGT_NETWORK,MSGL_ERR,"Server return %d:%s\n", http_hdr->status_code, http_hdr->reason_phrase);
+			return -1;
 	}
 
 	content_type = http_get_field( http_hdr, "Content-Type");
@@ -609,6 +614,7 @@
 	int i, ret;
 	int fd = stream->fd;
 	int done;
+	int auth_retry = 0;
 
 	asf_http_ctrl = (asf_http_streaming_ctrl_t*)malloc(sizeof(asf_http_streaming_ctrl_t));
 	if( asf_http_ctrl==NULL ) {
@@ -702,6 +708,11 @@
 				stream->type = STREAMTYPE_PLAYLIST;
 				done = 1;
 				break;
+			case ASF_Authenticate_e:
+				if( http_authenticate( http_hdr, url, &auth_retry)<0 ) return -1;
+				asf_http_ctrl->streaming_type = ASF_Unknown_e;
+				done = 0;
+				break;
 			case ASF_Unknown_e:
 			default:
 				mp_msg(MSGT_NETWORK,MSGL_ERR,"Unknown ASF streaming type\n");