| 
																	
																	
																		
																	
																	
																 | 
																@@ -237,6 +237,7 @@ typedef struct FFStream { | 
															
														
														
													
														
															
																 | 
																 | 
																    int feed_opened;     /* true if someone is writing to the feed */ | 
																 | 
																 | 
																    int feed_opened;     /* true if someone is writing to the feed */ | 
															
														
														
													
														
															
																 | 
																 | 
																    int is_feed;         /* true if it is a feed */ | 
																 | 
																 | 
																    int is_feed;         /* true if it is a feed */ | 
															
														
														
													
														
															
																 | 
																 | 
																    int readonly;        /* True if writing is prohibited to the file */ | 
																 | 
																 | 
																    int readonly;        /* True if writing is prohibited to the file */ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    int truncate;        /* True if feeder connection truncate the feed file */ | 
															
														
														
													
														
															
																 | 
																 | 
																    int conns_served; | 
																 | 
																 | 
																    int conns_served; | 
															
														
														
													
														
															
																 | 
																 | 
																    int64_t bytes_served; | 
																 | 
																 | 
																    int64_t bytes_served; | 
															
														
														
													
														
															
																 | 
																 | 
																    int64_t feed_max_size;      /* maximum storage size, zero means unlimited */ | 
																 | 
																 | 
																    int64_t feed_max_size;      /* maximum storage size, zero means unlimited */ | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -2431,10 +2432,18 @@ static int http_start_receive_data(HTTPContext *c) | 
															
														
														
													
														
															
																 | 
																 | 
																    } | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																    c->feed_fd = fd; | 
																 | 
																 | 
																    c->feed_fd = fd; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    if (c->stream->truncate) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        /* truncate feed file */ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        ffm_write_write_index(c->feed_fd, FFM_PACKET_SIZE); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        ftruncate(c->feed_fd, FFM_PACKET_SIZE); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        http_log("Truncating feed file '%s'\n", c->stream->feed_filename); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    } else { | 
															
														
														
													
														
															
																 | 
																 | 
																    if ((c->stream->feed_write_index = ffm_read_write_index(fd)) < 0) { | 
																 | 
																 | 
																    if ((c->stream->feed_write_index = ffm_read_write_index(fd)) < 0) { | 
															
														
														
													
														
															
																 | 
																 | 
																        http_log("Error reading write index from feed file: %s\n", strerror(errno)); | 
																 | 
																 | 
																        http_log("Error reading write index from feed file: %s\n", strerror(errno)); | 
															
														
														
													
														
															
																 | 
																 | 
																        return -1; | 
																 | 
																 | 
																        return -1; | 
															
														
														
													
														
															
																 | 
																 | 
																    } | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    c->stream->feed_write_index = FFMAX(ffm_read_write_index(fd), FFM_PACKET_SIZE); | 
																 | 
																 | 
																    c->stream->feed_write_index = FFMAX(ffm_read_write_index(fd), FFM_PACKET_SIZE); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    c->stream->feed_size = lseek(fd, 0, SEEK_END); | 
																 | 
																 | 
																    c->stream->feed_size = lseek(fd, 0, SEEK_END); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -3954,6 +3963,11 @@ static int parse_ffconfig(const char *filename) | 
															
														
														
													
														
															
																 | 
																 | 
																                get_arg(feed->feed_filename, sizeof(feed->feed_filename), &p); | 
																 | 
																 | 
																                get_arg(feed->feed_filename, sizeof(feed->feed_filename), &p); | 
															
														
														
													
														
															
																 | 
																 | 
																            } else if (stream) | 
																 | 
																 | 
																            } else if (stream) | 
															
														
														
													
														
															
																 | 
																 | 
																                get_arg(stream->feed_filename, sizeof(stream->feed_filename), &p); | 
																 | 
																 | 
																                get_arg(stream->feed_filename, sizeof(stream->feed_filename), &p); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        } else if (!strcasecmp(cmd, "Truncate")) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            if (feed) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                get_arg(arg, sizeof(arg), &p); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                feed->truncate = strtod(arg, NULL); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																        } else if (!strcasecmp(cmd, "FileMaxSize")) { | 
																 | 
																 | 
																        } else if (!strcasecmp(cmd, "FileMaxSize")) { | 
															
														
														
													
														
															
																 | 
																 | 
																            if (feed) { | 
																 | 
																 | 
																            if (feed) { | 
															
														
														
													
														
															
																 | 
																 | 
																                char *p1; | 
																 | 
																 | 
																                char *p1; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |