Commit 0603e955 by xiongziliang

修复cookie过期判断不准的bug

parent 327acdf5
......@@ -255,7 +255,7 @@ void HttpClient::onResponseCompleted_l() {
onResponseCompleted();
}
void HttpClient::checkCookie(const HttpClient::HttpHeader &headers) {
void HttpClient::checkCookie(HttpClient::HttpHeader &headers) {
//Set-Cookie: IPTV_SERVER=8E03927B-CC8C-4389-BC00-31DBA7EC7B49;expires=Sun, Sep 23 2018 15:07:31 GMT;path=/index/api/
auto it_set_cookie = headers.find("Set-Cookie");
if(it_set_cookie == headers.end()){
......@@ -274,12 +274,17 @@ void HttpClient::checkCookie(const HttpClient::HttpHeader &headers) {
if(index++ == 0){
cookie->setKeyVal(key,val);
} else{
if(key == "path"){
cookie->setPath(val);
}else if(key == "expires"){
cookie->setExpires(val);
}
continue;
}
if(key == "path") {
cookie->setPath(val);
continue;
}
if(key == "expires"){
cookie->setExpires(val,headers["Date"]);
continue;
}
}
......
......@@ -310,7 +310,7 @@ protected:
virtual void onManager() override;
private:
void onResponseCompleted_l();
void checkCookie(const HttpHeader &headers );
void checkCookie(HttpHeader &headers );
protected:
bool _isHttps;
private:
......
......@@ -26,6 +26,7 @@
#include "HttpCookie.h"
#include "Util/util.h"
#include "Util/logger.h"
#if defined(_WIN32)
#include "strptime_win.h"
......@@ -40,10 +41,17 @@ void HttpCookie::setPath(const string &path){
void HttpCookie::setHost(const string &host){
_host = host;
}
void HttpCookie::setExpires(const string &expires){
static uint32_t timeStrToInt(const string &date){
struct tm tt;
strptime(expires.data(),"%a, %b %d %Y %H:%M:%S %Z",&tt);
_expire = mktime(&tt);
strptime(date.data(),"%a, %b %d %Y %H:%M:%S %Z",&tt);
return mktime(&tt);
}
void HttpCookie::setExpires(const string &expires,const string &server_date){
_expire = timeStrToInt(expires);
if(!server_date.empty()){
_expire = time(NULL) + (_expire - timeStrToInt(server_date));
// DebugL << (timeStrToInt(expires) - timeStrToInt(server_date)) / 60;
}
}
void HttpCookie::setKeyVal(const string &key,const string &val){
_key = key;
......
......@@ -45,7 +45,7 @@ public:
void setPath(const string &path);
void setHost(const string &host);
void setExpires(const string &expires);
void setExpires(const string &expires,const string &server_date);
void setKeyVal(const string &key,const string &val);
operator bool ();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论