Browse Source

Use message from ServiceNotAuthorizedException, ServiceNotEnabledException

When sending an error response due to ServiceNotAuthorizedException or
ServiceNotEnabledException, usually we send a default message.  In the
ServiceNotEnabledException case, we use

	403 Git access forbidden

except in a dumb-HTTP-specific filter where we use the servlet
container's default 403 response:

	403 Forbidden

In the ServiceNotAuthorizedException case, we use the servlet
container's default 401 response:

	401 Unauthorized

There is one exception: a ServiceNotEnabledException when handling a
smart HTTP /info/refs request uses the message from the exception:

	403 Service not enabled

Be more consistent by always using the message from the exception.  This
way, authors of a RepositoryResolver, UploadPackFactory, or
ReceivePackFactory can provide a more detailed message when appropriate.
The defaults are

	401 Unauthorized
	403 Service not enabled

Change-Id: Id1fe1c2042fb96487c3671c1965c8a65c4b8e1b8
Signed-off-by: Jonathan Nieder <jrn@google.com>
stable-4.1
Jonathan Nieder 10 years ago
parent
commit
cc4f4f2fe1
  1. 4
      org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/AsIsFileFilter.java
  2. 5
      org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java
  3. 4
      org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/RepositoryFilter.java
  4. 8
      org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartServiceInfoRefs.java
  5. 5
      org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java

4
org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/AsIsFileFilter.java

@ -87,9 +87,9 @@ class AsIsFileFilter implements Filter {
asIs.access(req, db); asIs.access(req, db);
chain.doFilter(request, response); chain.doFilter(request, response);
} catch (ServiceNotAuthorizedException e) { } catch (ServiceNotAuthorizedException e) {
res.sendError(SC_UNAUTHORIZED); res.sendError(SC_UNAUTHORIZED, e.getMessage());
} catch (ServiceNotEnabledException e) { } catch (ServiceNotEnabledException e) {
res.sendError(SC_FORBIDDEN); res.sendError(SC_FORBIDDEN, e.getMessage());
} }
} }
} }

5
org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java

@ -137,11 +137,10 @@ class ReceivePackServlet extends HttpServlet {
try { try {
rp = receivePackFactory.create(req, getRepository(req)); rp = receivePackFactory.create(req, getRepository(req));
} catch (ServiceNotAuthorizedException e) { } catch (ServiceNotAuthorizedException e) {
rsp.sendError(SC_UNAUTHORIZED); rsp.sendError(SC_UNAUTHORIZED, e.getMessage());
return; return;
} catch (ServiceNotEnabledException e) { } catch (ServiceNotEnabledException e) {
sendError(req, rsp, SC_FORBIDDEN); sendError(req, rsp, SC_FORBIDDEN, e.getMessage());
return; return;
} }

4
org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/RepositoryFilter.java

@ -137,10 +137,10 @@ public class RepositoryFilter implements Filter {
sendError(req, res, SC_NOT_FOUND); sendError(req, res, SC_NOT_FOUND);
return; return;
} catch (ServiceNotEnabledException e) { } catch (ServiceNotEnabledException e) {
sendError(req, res, SC_FORBIDDEN); sendError(req, res, SC_FORBIDDEN, e.getMessage());
return; return;
} catch (ServiceNotAuthorizedException e) { } catch (ServiceNotAuthorizedException e) {
res.sendError(SC_UNAUTHORIZED); res.sendError(SC_UNAUTHORIZED, e.getMessage());
return; return;
} catch (ServiceMayNotContinueException e) { } catch (ServiceMayNotContinueException e) {
sendError(req, res, SC_FORBIDDEN, e.getMessage()); sendError(req, res, SC_FORBIDDEN, e.getMessage());

8
org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartServiceInfoRefs.java

@ -98,7 +98,7 @@ abstract class SmartServiceInfoRefs implements Filter {
try { try {
begin(req, db); begin(req, db);
} catch (ServiceNotAuthorizedException e) { } catch (ServiceNotAuthorizedException e) {
res.sendError(SC_UNAUTHORIZED); res.sendError(SC_UNAUTHORIZED, e.getMessage());
return; return;
} catch (ServiceNotEnabledException e) { } catch (ServiceNotEnabledException e) {
sendError(req, res, SC_FORBIDDEN, e.getMessage()); sendError(req, res, SC_FORBIDDEN, e.getMessage());
@ -132,11 +132,9 @@ abstract class SmartServiceInfoRefs implements Filter {
advertise(req, new PacketLineOutRefAdvertiser(out)); advertise(req, new PacketLineOutRefAdvertiser(out));
buf.close(); buf.close();
} catch (ServiceNotAuthorizedException e) { } catch (ServiceNotAuthorizedException e) {
res.sendError(SC_UNAUTHORIZED); res.sendError(SC_UNAUTHORIZED, e.getMessage());
} catch (ServiceNotEnabledException e) { } catch (ServiceNotEnabledException e) {
sendError(req, res, SC_FORBIDDEN); sendError(req, res, SC_FORBIDDEN, e.getMessage());
} catch (ServiceMayNotContinueException e) { } catch (ServiceMayNotContinueException e) {
if (e.isOutput()) if (e.isOutput())
buf.close(); buf.close();

5
org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java

@ -137,11 +137,10 @@ class UploadPackServlet extends HttpServlet {
try { try {
rp = uploadPackFactory.create(req, getRepository(req)); rp = uploadPackFactory.create(req, getRepository(req));
} catch (ServiceNotAuthorizedException e) { } catch (ServiceNotAuthorizedException e) {
rsp.sendError(SC_UNAUTHORIZED); rsp.sendError(SC_UNAUTHORIZED, e.getMessage());
return; return;
} catch (ServiceNotEnabledException e) { } catch (ServiceNotEnabledException e) {
sendError(req, rsp, SC_FORBIDDEN); sendError(req, rsp, SC_FORBIDDEN, e.getMessage());
return; return;
} }

Loading…
Cancel
Save