Protocol's get() method no longer takes ownership of the URI. HTTP is the
authorMichael Brown <mcb30@etherboot.org>
Mon, 15 Jan 2007 09:18:06 +0000 (09:18 +0000)
committerMichael Brown <mcb30@etherboot.org>
Mon, 15 Jan 2007 09:18:06 +0000 (09:18 +0000)
exception rather than the rule; we may as well keep things clean for other
protocols.

src/net/tcp/http.c
src/usr/fetch.c

index 346f5a8..3ae7b1e 100644 (file)
@@ -366,7 +366,6 @@ static void http_reap ( struct async *async ) {
        struct http_request *http =
                container_of ( async, struct http_request, async );
 
-       free_uri ( http->uri );
        free ( http );
 }
 
@@ -385,8 +384,6 @@ static struct async_operations http_async_operations = {
  * @v buffer           Buffer into which to download file
  * @v parent           Parent asynchronous operation
  * @ret rc             Return status code
- *
- * If it returns success, this function takes ownership of the URI.
  */
 int http_get ( struct uri *uri, struct buffer *buffer, struct async *parent ) {
        struct http_request *http;
index 9e3c2de..71304bb 100644 (file)
@@ -86,7 +86,6 @@ int fetch ( const char *uri_string, userptr_t *data, size_t *len ) {
        async_init_orphan ( &async );
        if ( ( rc = download ( uri, &buffer, &async ) ) != 0 )
                goto err;
-       uri = NULL;
        async_wait ( &async, &rc, 1 );
        if ( rc != 0 )
                goto err;
@@ -98,7 +97,7 @@ int fetch ( const char *uri_string, userptr_t *data, size_t *len ) {
        /* Release temporary resources.  The ebuffer storage is now
         * owned by our caller, so we don't free it.
         */
-
+       free_uri ( uri );
        return 0;
 
  err: