Quoting issue?
Tente colocar o URL em axel
entre aspas simples. O Bash está tentando analisar o &
nos argumentos do parâmetro na URL enquanto você diz ao segundo plano o comando.
$ axel 'https://eusa.example.com/zipstream/1581777.zip?tunnel=1&token=b7385bb62e3111e3ace1002481265109&storage=s09'
Rastreador de bugs do Axel
Examinando a lista de bugs abertos para o Axel, parece que esse problema foi identificado anteriormente e o autor parece não estar respondendo ao problema.
Veja estes problemas para mais detalhes :
- [# 313080] Produz uma solicitação HTTP incorreta quando 302 é redirecionado link tem mais de 255 caracteres (como o youtube)
- link
- [# 311178] Estouro do buffer em http.c
- [# 311101] Problemas de nomeação de arquivos de saída
- [# 310637] falha quando um HTTP 302 o redireciona para um local de FTP
Dado o tempo que passou sem nenhum movimento sobre esses problemas, eu consideraria este projeto morto. Ainda pode ser utilizável, mas não há ninguém dirigindo.
Isso não é incomum no mundo do software livre e é, na verdade, o que torna esse modelo de licenciamento exclusivo, no sentido de que você pode pegar o código-fonte em um projeto nesse estado e continuar a usá-lo e a manter. você mesmo.
O código-fonte deste projeto pode ser facilmente baixado via svn
. Repo de código do projeto:
Download de & compilação
Você pode fazer o download de uma cópia do repositório da seguinte forma:
$ svn co svn://svn.debian.org/svn/axel/
Na minha caixa do Fedora 19, o código é configurado e compilado perfeitamente para que este projeto esteja realmente em bom estado, se alguém quiser modificar a base de código.
configure
$ ./configure
Configuration done:
Internationalization enabled.
Debugging disabled.
Binary stripping enabled.
faça
$ make
msgfmt -vo nl.mo nl.po
40 translated messages, 6 fuzzy translations, 4 untranslated messages.
msgfmt -vo de.mo de.po
46 translated messages, 4 fuzzy translations.
msgfmt -vo ru.mo ru.po
46 translated messages, 2 fuzzy translations, 2 untranslated messages.
msgfmt -vo zh_CN.mo zh_CN.po
42 translated messages, 6 fuzzy translations, 2 untranslated messages.
gcc -c axel.c -o axel.o -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Os -Wall
gcc -c conf.c -o conf.o -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Os -Wall
gcc -c conn.c -o conn.o -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Os -Wall
gcc -c ftp.c -o ftp.o -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Os -Wall
gcc -c http.c -o http.o -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Os -Wall
gcc -c search.c -o search.o -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Os -Wall
gcc -c tcp.c -o tcp.o -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Os -Wall
gcc -c text.c -o text.o -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Os -Wall
gcc *.o -o axel -pthread
strip axel
Consegui compilá-lo e obtive um binário perfeitamente utilizável de axel
.
$ ls -l | grep "axel$"
-rwxrwxr-x. 1 saml saml 35816 Dec 14 21:56 axel
Modificando a base de código?
A seção de código que eu acredito que você gostaria de focar estaria aqui no arquivo conn.c
:
conn_exec( conn );
conn_disconnect( conn );
/* Code 3xx == redirect */
if( conn->http->status / 100 != 3 )
break;
if( ( t = http_header( conn->http, "location:" ) ) == NULL )
return( 0 );
sscanf( t, "%255s", s );
if( strstr( s, "://" ) == NULL)
{
sprintf( conn->http->headers, "%s%s",
conn_url( conn ), s );
strncpy( s, conn->http->headers, MAX_STRING );
}
C / C ++ não é minha "língua" nativa, então eu teria que começar executando este código através de gdb
(também conhecido como o Depurador GNU) ou inserir algumas declarações printf
ao redor desta seção para ver o que está acontecendo quando axel
acessa as URLs com as quais você está tendo problemas.