/*
- * $Id: client_side.cc,v 1.638 2003/06/18 12:34:51 robertc Exp $
+ * $Id: client_side.cc,v 1.639 2003/06/19 18:18:46 hno Exp $
*
* DEBUG: section 33 Client-side Routines
* AUTHOR: Duane Wessels
conn->fd, (unsigned long int) conn->body.size_left,
(unsigned long int) conn->in.notYetUsed, callback, request);
conn->body.callback = callback;
- conn->body.cbdata = cbdata;
+ conn->body.cbdata = cbdataReference(cbdata);
conn->body.buf = buf;
conn->body.bufsize = size;
conn->body.request = requestLink(request);
}
/* Invoke callback function */
- void *cbdata = conn->body.cbdata;
+ void *cbdata;
- callback(buf, size, cbdata);
+ if (cbdataReferenceValidDone(conn->body.cbdata, &cbdata))
+ callback(buf, size, cbdata);
if (request != NULL) {
requestUnlink(request); /* Linked in clientReadBody */
conn->body.callback = clientReadBodyAbortHandler;
conn->body.buf = bodyAbortBuf;
conn->body.bufsize = sizeof(bodyAbortBuf);
- conn->body.cbdata = data;
+ conn->body.cbdata = cbdataReference(data);
}
}
ConnStateData *conn = request->body_connection;
char *buf;
CBCB *callback;
- void *cbdata;
request->body_connection = NULL;
if (!conn || conn->body.size_left <= 0)
if (conn->body.callback != NULL) {
buf = conn->body.buf;
callback = conn->body.callback;
- cbdata = conn->body.cbdata;
assert(request == conn->body.request);
conn->body.buf = NULL;
conn->body.callback = NULL;
conn->body.cbdata = NULL;
conn->body.request = NULL;
- callback(buf, -1, cbdata); /* Signal abort to clientReadBody caller */
+ void *cbdata;
+
+ if (cbdataReferenceValidDone(conn->body.cbdata, &cbdata))
+ callback(buf, -1, cbdata); /* Signal abort to clientReadBody caller */
+
requestUnlink(request);
}