diff options
author | Michael Brown | 2007-05-28 19:35:15 +0200 |
---|---|---|
committer | Michael Brown | 2007-05-28 19:35:15 +0200 |
commit | 656485c1f1487775ccb0c223c4f5809f8daa7fcc (patch) | |
tree | 045b8b6e395af9b8906ce30ed6c707f0d2310db1 /src/core/open.c | |
parent | Move increment/decrement debug messages to DBG2 level (diff) | |
download | ipxe-656485c1f1487775ccb0c223c4f5809f8daa7fcc.tar.gz ipxe-656485c1f1487775ccb0c223c4f5809f8daa7fcc.tar.xz ipxe-656485c1f1487775ccb0c223c4f5809f8daa7fcc.zip |
Make URI structures reference-counted.
Diffstat (limited to 'src/core/open.c')
-rw-r--r-- | src/core/open.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/core/open.c b/src/core/open.c index b61160eb..6c184e65 100644 --- a/src/core/open.c +++ b/src/core/open.c @@ -52,6 +52,7 @@ static struct socket_opener socket_openers_end[0] int xfer_open_uri ( struct xfer_interface *xfer, const char *uri_string ) { struct uri *uri; struct uri_opener *opener; + int rc = -ENOTSUP; DBGC ( xfer, "XFER %p opening URI %s\n", xfer, uri_string ); @@ -61,14 +62,16 @@ int xfer_open_uri ( struct xfer_interface *xfer, const char *uri_string ) { for ( opener = uri_openers ; opener < uri_openers_end ; opener++ ) { if ( strcmp ( uri->scheme, opener->scheme ) == 0 ) { - return opener->open ( xfer, uri ); + rc = opener->open ( xfer, uri ); + goto done; } } DBGC ( xfer, "XFER %p attempted to open unsupported URI scheme " "\"%s\"\n", xfer, uri->scheme ); - free_uri ( uri ); - return -ENOTSUP; + done: + uri_put ( uri ); + return rc; } /** |