#if USE_HTCP
const libecap::Name Adaptation::Ecap::protocolHtcp("Htcp", libecap::Name::NextId());
#endif
++const libecap::Name Adaptation::Ecap::protocolIcy("ICY", libecap::Name::NextId());
++const libecap::Name Adaptation::Ecap::protocolUnknown("_unknown_", libecap::Name::NextId());
++
+const libecap::Name Adaptation::Ecap::metaBypassable("bypassable", libecap::Name::NextId());
/// the host application (i.e., Squid) wrapper registered with libecap
static libecap::shared_ptr<Adaptation::Ecap::Host> TheHost;
// assign our host-specific IDs to well-known names
// this code can run only once
+ libecap::headerTransferEncoding.assignHostId(HDR_TRANSFER_ENCODING);
libecap::headerReferer.assignHostId(HDR_REFERER);
libecap::headerContentLength.assignHostId(HDR_CONTENT_LENGTH);
+ libecap::headerVia.assignHostId(HDR_VIA);
+ // TODO: libecap::headerXClientIp.assignHostId(HDR_X_CLIENT_IP);
+ // TODO: libecap::headerXServerIp.assignHostId(HDR_X_SERVER_IP);
- libecap::protocolHttp.assignHostId(PROTO_HTTP);
- libecap::protocolHttps.assignHostId(PROTO_HTTPS);
- libecap::protocolFtp.assignHostId(PROTO_FTP);
- libecap::protocolGopher.assignHostId(PROTO_GOPHER);
- libecap::protocolWais.assignHostId(PROTO_WAIS);
- libecap::protocolUrn.assignHostId(PROTO_URN);
- libecap::protocolWhois.assignHostId(PROTO_WHOIS);
- protocolInternal.assignHostId(PROTO_INTERNAL);
- protocolCacheObj.assignHostId(PROTO_CACHEOBJ);
- protocolIcp.assignHostId(PROTO_ICP);
+ libecap::protocolHttp.assignHostId(AnyP::PROTO_HTTP);
+ libecap::protocolHttps.assignHostId(AnyP::PROTO_HTTPS);
+ libecap::protocolFtp.assignHostId(AnyP::PROTO_FTP);
+ libecap::protocolGopher.assignHostId(AnyP::PROTO_GOPHER);
+ libecap::protocolWais.assignHostId(AnyP::PROTO_WAIS);
+ libecap::protocolUrn.assignHostId(AnyP::PROTO_URN);
+ libecap::protocolWhois.assignHostId(AnyP::PROTO_WHOIS);
+ protocolInternal.assignHostId(AnyP::PROTO_INTERNAL);
+ protocolCacheObj.assignHostId(AnyP::PROTO_CACHE_OBJECT);
+ protocolIcp.assignHostId(AnyP::PROTO_ICP);
#if USE_HTCP
- protocolHtcp.assignHostId(PROTO_HTCP);
+ protocolHtcp.assignHostId(AnyP::PROTO_HTCP);
#endif
++ protocolIcy.assignHostId(AnyP::PROTO_ICY);
++ protocolUnknown.assignHostId(AnyP::PROTO_UNKNOWN);
+
+ // allows adapter to safely ignore this in adapter::Service::configure()
+ metaBypassable.assignHostId(1);
}
std::string
{
// TODO: optimize?
switch (theMessage.protocol) {
- case PROTO_HTTP:
+ case AnyP::PROTO_HTTP:
return libecap::protocolHttp;
- case PROTO_HTTPS:
+ case AnyP::PROTO_HTTPS:
return libecap::protocolHttps;
- case PROTO_FTP:
+ case AnyP::PROTO_FTP:
return libecap::protocolFtp;
- case PROTO_GOPHER:
+ case AnyP::PROTO_GOPHER:
return libecap::protocolGopher;
- case PROTO_WAIS:
+ case AnyP::PROTO_WAIS:
return libecap::protocolWais;
- case PROTO_WHOIS:
+ case AnyP::PROTO_WHOIS:
return libecap::protocolWhois;
- case PROTO_URN:
+ case AnyP::PROTO_URN:
return libecap::protocolUrn;
- case PROTO_ICP:
+ case AnyP::PROTO_ICP:
return protocolIcp;
#if USE_HTCP
- case PROTO_HTCP:
+ case AnyP::PROTO_HTCP:
return protocolHtcp;
#endif
- case PROTO_CACHEOBJ:
+ case AnyP::PROTO_CACHE_OBJECT:
return protocolCacheObj;
- case PROTO_INTERNAL:
+ case AnyP::PROTO_INTERNAL:
return protocolInternal;
- case PROTO_ICY:
- return Name();
- case PROTO_NONE:
+ case AnyP::PROTO_ICY:
- return Name();
++ return protocolIcy;
++ case AnyP::PROTO_UNKNOWN:
++ return protocolUnknown; // until we remember the protocol image
+ case AnyP::PROTO_NONE:
return Name();
- case PROTO_MAX:
+ case AnyP::PROTO_MAX:
break; // should not happen
- // no default to catch PROTO_ additions
+ // no default to catch AnyP::PROTO_ additions
}
Must(false); // not reached
return Name();
theMessage.protocol = TranslateProtocolId(p);
}
--protocol_t
++AnyP::ProtocolType
Adaptation::Ecap::FirstLineRep::TranslateProtocolId(const Name &name)
{
if (name.assignedHostId())
-- return static_cast<protocol_t>(name.hostId());
- return PROTO_NONE; // no PROTO_OTHER
- return AnyP::PROTO_NONE; // no AnyP::PROTO_OTHER
++ return static_cast<AnyP::ProtocolType>(name.hostId());
++ return AnyP::PROTO_UNKNOWN;
}
#include "BodyPipe.h"
#include "adaptation/forward.h"
#include "adaptation/Message.h"
++#include "anyp/ProtocolType.h"
#include <libecap/common/message.h>
#include <libecap/common/header.h>
#include <libecap/common/body.h>
void protocol(const Name &aProtocol);
protected:
-- static protocol_t TranslateProtocolId(const Name &name);
++ static AnyP::ProtocolType TranslateProtocolId(const Name &name);
private:
HttpMsg &theMessage; // the message which first line is being translated