Re[8]: Asynchronous Pluggable Protocol http-заголовки, post и put данные
От: east  
Дата: 20.04.15 14:22
Оценка:
E>В общем вот это я вынес отдельный поток
E>
E>static UINT LoadSrc(LPVOID pParam)
E>{
E>    THREAD* pLoad = (THREAD*)pParam;
E>    pLoad->pSink->ReportProgress(BINDSTATUS_CONNECTING, pLoad->sUrl);
E>    pLoad->pSink->ReportProgress(BINDSTATUS_SENDINGREQUEST, pLoad->sUrl);
E>    pLoad->pSink->ReportProgress(BINDSTATUS_BEGINDOWNLOADDATA, pLoad->sUrl);
E>    pLoad->BD->Send(pLoad->sUrl);
E>    CString ct = pLoad->BD->GetRawHeader(_T("Content-Type:"));
E>    pLoad->pSink->ReportProgress(BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE, ct);
E>    pLoad->pSink->ReportData(BSCF_DATAFULLYAVAILABLE, 0, pLoad->BD->m_ulDataLen);
E>    pLoad->pSink->ReportResult(S_OK,0,NULL);
E>    return 0;
E>}

E>


E>Как и следовало ожидать, ничего не изменилось. Все равно браузер два раза вызывает метод Start в разных потоках. Наблюдается такая ситуация, если в Start просто вернуть S_OK, то браузер виснет. Если вызвать ReportData или ReportResult, то Start вызывается второй раз в другом потоке и следовательно вызываются все остальные методы и как следствие страница не найдена и ошибки.

E>Может у кого есть рабочий код асинхронного протокола?

Как не стыдно признавать, но ошибка у меня была в другом месте. Неправильно получал mime-тип. Вот из-за этого и вылазили ошибки. Вышеприведенный код работает нормально, пока глюков не замечал. Можно выводить его как в отдельный поток, так и в методе Start.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.