fixed bug #1445735 - WinProxy headers not read by NSISdl

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4559 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2006-03-08 20:25:56 +00:00
parent 7e6bba5c3f
commit fc8348b5a5

View file

@ -404,25 +404,36 @@ run_again:
{
m_con->recv_line(buf,4096);
if (!buf[0]) { m_http_state=3; break; }
char *h = buf;
// workaround for bug #1445735
//
// some proxies, like WinProxy, prefix headers with tabs
// or spaces. to make sure headers are detected properly,
// this removes up to 128 useless white spaces.
while ((h - buf < 128) && (*h == ' ' || *h == '\t')) h++;
if (!m_recvheaders)
{
m_recvheaders_size=strlen(buf)+1;
m_recvheaders_size=strlen(h)+1;
m_recvheaders=(char*)malloc(m_recvheaders_size+1);
if (m_recvheaders)
{
strcpy(m_recvheaders,buf);
strcpy(m_recvheaders,h);
m_recvheaders[m_recvheaders_size]=0;
}
}
else
{
int oldsize=m_recvheaders_size;
m_recvheaders_size+=strlen(buf)+1;
m_recvheaders_size+=strlen(h)+1;
char *n=(char*)malloc(m_recvheaders_size+1);
if (n)
{
memcpy(n,m_recvheaders,oldsize);
strcpy(n+oldsize,buf);
strcpy(n+oldsize,h);
n[m_recvheaders_size]=0;
free(m_recvheaders);
m_recvheaders=n;