Skip to content

Commit

Permalink
upipe_http_src: handle all redirections
Browse files Browse the repository at this point in the history
  • Loading branch information
quarium authored and cmassiot committed Dec 9, 2024
1 parent 28f6c4c commit 521ae90
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 19 deletions.
24 changes: 6 additions & 18 deletions lib/upipe-modules/upipe_http_source.c
Original file line number Diff line number Diff line change
Expand Up @@ -461,19 +461,10 @@ static int upipe_http_src_status_cb(http_parser *parser)

upipe_dbg_va(upipe, "reply http code %i", parser->status_code);

switch (parser->status_code) {
/* success */
case 200:
/* partial content */
case 206:
/* found */
case 302:
break;
default:
upipe_http_src_throw_error(upipe, parser->status_code);
return -1;
}
return 0;
if (parser->status_code < 400)
return 0;
upipe_http_src_throw_error(upipe, parser->status_code);
return -1;
}

static int upipe_http_src_output_data(struct upipe *upipe,
Expand Down Expand Up @@ -545,12 +536,9 @@ static int upipe_http_src_message_complete(http_parser *parser)
upipe_http_src_close(upipe);
upipe_throw_source_end(upipe);

switch (status_code) {
/* redirect */
case 302:
if (status_code >= 300 && status_code < 400 && location != NULL)
/* redirect */
upipe_http_src_throw_redirect(upipe, location);
break;
}

free(location);

Expand Down
6 changes: 5 additions & 1 deletion tests/upipe_http_src_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
#include "upipe/upipe.h"
#include "upipe-modules/upipe_http_source.h"
#include "upipe-modules/upipe_null.h"

#include "upipe-modules/uprobe_http_redirect.h"
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
Expand All @@ -72,6 +72,8 @@ static int catch(struct uprobe *uprobe, struct upipe *upipe,
case UPROBE_READY:
case UPROBE_DEAD:
case UPROBE_SOURCE_END:
case UPROBE_NEW_FLOW_DEF:
case UPROBE_HTTP_SRC_REDIRECT:
break;
}
return UBASE_ERR_NONE;
Expand Down Expand Up @@ -109,6 +111,8 @@ int main(int argc, char *argv[])
assert(logger != NULL);
logger = uprobe_upump_mgr_alloc(logger, upump_mgr);
assert(logger != NULL);
logger = uprobe_http_redir_alloc(logger);
assert(logger);
logger = uprobe_ubuf_mem_alloc(logger, umem_mgr, UBUF_POOL_DEPTH,
UBUF_POOL_DEPTH);
assert(logger != NULL);
Expand Down

0 comments on commit 521ae90

Please sign in to comment.