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==

Reply via email to