Code with Finding: |
class HTTPExtFrame {
/**
* Check if the mandatory extensions are supported.
* @param request The request to handle.
* @exception ProtocolException thrown when there is one (or more)
* unsupported extensions or if there is no extension in the M-XXX
* method.
*/
public void checkMandatoryExtension(Request request, String mmethod)
throws ProtocolException
{
HttpExtList extl = request.getHttpManExtDecl();
HttpExtList cextl = request.getHttpCManExtDecl();
HttpExt exts[] = null;
HttpExt cexts[] = null;
Vector notsupported = new Vector(2);
//remove the M-
String method = mmethod.substring(2);
if ((extl == null) && (cextl == null)) {
Reply error = request.makeReply(HTTP.NOT_EXTENDED) ;
error.setContent("Mandatory extension expected.");
throw new HTTPException(error);
}
int nb_extensions = 0;
if (extl != null) {
exts = extl.getHttpExts();
int len = exts.length;
nb_extensions += len;
for (int i=0 ; i < len ; i++) {
if (! supportedExtension(exts[i].getName(), method, this))
notsupported.addElement(exts[i].getName());
}
}
if (cextl != null) {
cexts = cextl.getHttpExts();
int len = cexts.length;
nb_extensions += len;
for (int i=0 ; i < cexts.length ; i++) {
if (! supportedExtension(cexts[i].getName(), method, this))
notsupported.addElement(cexts[i].getName());
}
}
if (nb_extensions == 0) {
Reply error = request.makeReply(HTTP.NOT_EXTENDED) ;
error.setContent("Mandatory extension expected.");
throw new HTTPException(error);
}
int len = -1;
if ((len = notsupported.size()) > 0) {
Reply error = request.makeReply(HTTP.NOT_EXTENDED) ;
HtmlGenerator content = new HtmlGenerator("Error");
content.append("<h1>Mandatory extension(s) not supported:",
"</h1><p>\n");
content.append("<ul>\n");
for (int i = 0; i < len; i++)
content.append("<li> "+(String)notsupported.elementAt(i)+"\n");
content.append("</ul>\n");
error.setStream(content);
throw new HTTPException(error);
}
}
}
|