Replaces many goto:'s in urn Parsing with a small sub-function.
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: [EMAIL PROTECTED]
# target_branch: file:///src/squid/bzr/trunk/
# testament_sha1: 58e87e2c8c80adb1d1368a2e3401d46222506d2e
# timestamp: 2008-04-11 16:53:32 +1200
# message: Cleanups
# base_revision_id: [EMAIL PROTECTED]
# 501h2s5pdhawbc36
#
# Begin patch
=== modified file 'src/urn.cc'
--- src/urn.cc 2008-03-16 22:10:18 +0000
+++ src/urn.cc 2008-04-11 04:47:26 +0000
@@ -299,6 +299,16 @@
return u1->rtt - u2->rtt;
}
+static void
+urnHandleReplyError(UrnState *urnState, StoreEntry *urlres_e)
+{
+ urlres_e->unlock();
+ urnState->entry->unlock();
+ HTTPMSGUNLOCK(urnState->request);
+ HTTPMSGUNLOCK(urnState->urlres_r);
+ delete urnState;
+}
+
/* TODO: use the clientStream support for this */
static void
urnHandleReply(void *data, StoreIOBuffer result)
@@ -324,14 +334,9 @@
/* Can't be lower because of the goto's */
HttpVersion version(1, 0);
- if (EBIT_TEST(urlres_e->flags, ENTRY_ABORTED)) {
- goto error;
- }
-
- if (result.length == 0) {
- goto error;
- } else if (result.flags.error < 0) {
- goto error;
+ if (EBIT_TEST(urlres_e->flags, ENTRY_ABORTED) || result.length == 0 || result.flags.error < 0) {
+ urnHandleReplyError(urnState, urlres_e);
+ return;
}
/* Update reqofs to point to where in the buffer we'd be */
@@ -339,7 +344,8 @@
/* Handle reqofs being bigger than normal */
if (urnState->reqofs >= URN_REQBUF_SZ) {
- goto error;
+ urnHandleReplyError(urnState, urlres_e);
+ return;
}
/* If we haven't received the entire object (urn), copy more */
@@ -360,7 +366,8 @@
if (0 == k) {
debugs(52, 1, "urnHandleReply: didn't find end-of-headers for " << e->url() );
- goto error;
+ urnHandleReplyError(urnState, urlres_e);
+ return;
}
s = buf + k;
@@ -375,7 +382,8 @@
err->url = xstrdup(e->url());
errorAppendEntry(e, err);
delete rep;
- goto error;
+ urnHandleReplyError(urnState, urlres_e);
+ return;
}
delete rep;
@@ -395,7 +403,8 @@
err = errorCon(ERR_URN_RESOLVE, HTTP_NOT_FOUND, urnState->request);
err->url = xstrdup(e->url());
errorAppendEntry(e, err);
- goto error;
+ urnHandleReplyError(urnState, urlres_e);
+ return;
}
min_u = urnFindMinRtt(urls, urnState->request->method, NULL);
@@ -455,12 +464,7 @@
/* mb was absorbed in httpBodySet call, so we must not clean it */
storeUnregister(urnState->sc, urlres_e, urnState);
-error:
- urlres_e->unlock();
- urnState->entry->unlock();
- HTTPMSGUNLOCK(urnState->request);
- HTTPMSGUNLOCK(urnState->urlres_r);
- delete urnState;
+ urnHandleReplyError(urnState, urlres_e);
}
static url_entry *
# Begin bundle
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWWA/o8YAAhNfgEQQUXf//37/
3iC////+UASaq85pV27XWVbTdkJJECZTG1U8DNUmzKamj1GmmjQPRkgBpoaCSgmE0Cnip+mqDR6Q
AAAaGgA3qJoCSEgU9NGU9TZNU9ATTagNANBo0aGgDahw00yMRhNMBDAJphGCYmQ0yNDQCSSYQnqp
+FI2ifpMkfqTT0mT1MTQ0G9QgAaNCA23X75R3BfT+mnCSp7ZQJ5BpqUwyqZ91ngSy37HyxfGWsfi
bdVjyJAqkB+t+HJvsN/EwzJbNn3+a7pqXvi4bJS1vKB21NJsGnZoeMjL9fXZg2GmVz9mGNXu4JSa
uV3gNUx9SlwYROjRqyNrt1utnstkhga3kE5+d4jwueNg3W4ukzX1dD8/LQ8IqMHQbqnsQcdbKZWs
dm8Yi4Mcdp7lMRYx+uQRea0RssavCzepXnYRjFxCOoYRtFKkz1Av26hkEBSNNRSUukIcR1zLzMLn
sVcpuU21Oeq6hd616VDuTVb24zq7pT25DKeOclxRwTZEyC3/s3SB97MnW0EOVgxZthjDEkt7MxV2
Z+yZaGI5PxrPuV6CeC8a26uC5iq95Jx8RrjF7CmSiYRItNq41WDoKLRjkGtUM3ihGI4uEyGheXHY
xne2wYZqss0yxKF2VJDSqTTQYcS6+Tp4CdTnF0qn6l8QxinJEYjZ7roVZQKk5SU0LUayQxONRozl
IiHRcPV9DgNSKo574fwTWwoxQlgYlRcoRWhQvczcqZixRabgpuVHOIs2GHoV7C9LHlifQ1BzPF1b
KGpu3HJqfM4nZz7xbbBHfJCZMzdvBvwN0ydVbT40u47CCXaj9T4HKbcxfsSuH8Dd+CXMSuBXYWaT
L+U22Jbpc8tSCa4LkUUN8MIFZqHhzmwOuXT6PUdBZWUHgOQJGVZXJoSrp6sIutToUqv/vxP8vSLp
F0dvQI8U8GMfYtxxlWXWo6S7dm9uw2SEYxhhfSUCPIQVpBWlGRFHyFFJ0NzHEiQGN2sXDlyD86TJ
QM7M0XBwZhiWyvum+bl0WtzAQDF1mUEjIkd2YsmIqrKexb7kbAGlnhXtLrA4woEYi9nGdIqchYFJ
NGGUzFw8sIDjUaTgUkn05dkbdGaRU83BT4xVEzjvo9Wgugm8YUZVhO7dl4UFWhmnhpEcKHkDXMoM
6eW27An0aHPhFkuEDbe/l8xpD136xZQdChczh7mypNRe+66yJYIcXQqS3roqktO3C426e2WJAeVJ
mQwyQMGghbAMKAJt68RM2ig4YFLpcVMLaKkRlkI2mJbba81SDnehawi1KtctDZtXtFnlxEY2rnUp
gDS5kuLBRQNSKbgEUvk6XHCcJpnNAiacXj1CLTtRm5osZRZVvPpLRGdMkutkjQUboYgU8STFLGQq
IZiGZsjjVDxkhs5hexMdoAdBcZ++mRnHJmrDceHFmeO61rkjqmDHmvbIfQEx8WJD8KyU8c47iB2a
BZao+UQ8mChlVnRBK38pHDA3IUxtzi83nn1ZNgjKbvIqpFDFXfzK4DZLUpCe8UyvHLHTje+NaUtf
QVCK9St4sbOgYN/4u5IpwoSDAf0eMA==