summaryrefslogtreecommitdiffstats
path: root/lib/libfetch/common.c
Commit message (Collapse)AuthorAgeFilesLines
* Fix a memory leak: when freeing the connection structure, don't forget todes2005-02-161-0/+1
| | | | | | | free the connection buffer as well. PR: bin/76153 MFC after: 1 week
* Update copyright years.des2004-09-211-1/+1
|
* preparation for RFC3493. EAI_NODATA was deprecated.ume2003-10-231-0/+2
|
* Add and document support for a FETCH_BIND_ADDRESS environment variabledes2003-03-031-3/+32
| | | | | | specifying a local address to bind sockets to. Caveat: lightly tested. PR: bin/37572
* style(9): add parentheses to sizeof even when not strictly required.des2003-01-281-8/+8
| | | | MFC after: 3 days
* Fix signed/unsigned comparison warning/error from 'make release'jwd2003-01-281-4/+4
|
* Experimental support for .netrc.des2003-01-221-0/+91
|
* Set auto-retry mode to avoid some spurious errors.des2003-01-031-0/+1
| | | | | Submitted by: Andre Albsmeier <andre.albsmeier@siemens.com> MFC after: 7 days
* Fix a bug in fenner's _fetch_writev() patch (rev 1.36)des2002-10-301-1/+6
| | | | Submitted by: fenner
* Recommit the non-broken parts of 1.34 and 1.37.des2002-10-301-6/+11
| | | | Change the type and name of a variable introduced in 1.33.
* Reinstate revs 1.35-36 and 1.38. Revisions 1.34 and 1.37 were specificallyimp2002-10-301-12/+38
| | | | | | | | the root cause of the bus errors I was experiencing. Submitted by: fenner Tested by: obrien Prompted by: peter
* Fix `pkg_add -r' by backing out revs 1.34-1.38.obrien2002-10-291-52/+19
| | | | | Revs 1.37-8 produce a bus error in some environments. Revs 1.34-6 do not bus error, but write corrupted files.
* Fix an off-by-one error (> where >= should have been used) which causeddes2002-10-281-6/+5
| | | | | | | | | _fetch_writev() to incorrectly report EPIPE in certain cases. Also fix a number of const warnings by using __DECONST(), plus a signed / unsigned comparison by casting the rhs to ssize_t. Submitted by: fenner, Craig Rodrigues <rodrigc@attbi.com>
* Slight amendment to rev 1.34: instead of considering any short read andes2002-10-271-6/+8
| | | | | | error, only report an error if no data was read at all (unless len was 0 to start with). Otherwise, the final read of practically any transfer will end in a fatal error.
* Introduce _fetch_writev(), which is the conn_t version of writev(2). Indes2002-10-271-7/+34
| | | | | | | | | | | | | | the SSL case, it is no different from the old _fetch_write(), but in the non-SSL case it uses writev(2) to send the entire vector as a single packet (provided it can fit in one packet). Implement _fetch_write() and _fetch_putln() in terms of _fetch_writev(). This should improve performance in the non-SSL case (by reducing protocol overhead) and solve the problem where too-smart-for-their-own-good firewalls reject FTP packets that do not end in CRLF. PR: bin/44123 Submitted by: fenner
* Eliminate two cases of undefined behaviour: total in _fetch_write() wasdes2002-10-271-0/+1
| | | | | | | | not initialized before use, and _http_growbuf() did not return a value on success. Reported by: Peter Edwards <pmedwards@eircom.net> MFC after: 2 weeks
* Back out the previous commit, and fix the bug rather than try to hide itsdes2002-10-271-10/+18
| | | | | | | symptoms: make timeouts and short transfers fatal, and set errno to an appropriate value (ETIMEDOUT for a timeout, EPIPE for a short transfer). MFC after: 2 weeks
* Fix an infinite loop when _fetch_read() can return 0 (if thealfred2002-09-201-1/+5
| | | | | connection is broken), take this into account and return at this point.
* Make _fetch_connect() always set the error code.fenner2002-09-171-1/+3
| | | | Tell ftp that _fetch_connect() always sets the error code (http already knew)
* Reintroduce debugging code that somehow got lost in a previous revision.des2002-06-241-0/+2
|
* Add a reference count to struct fetchconn so we don't prematurely close anddes2002-06-111-0/+19
| | | | free a cached FTP connection.
* Make SSL support conditional on NOCRYPT.des2002-06-051-0/+11
|
* Add SSL support + slight cleanup.des2002-06-051-1/+49
| | | | Submitted by: Henry Whincup <henry@techiebod.com> (in principle)
* Wrap everything in struct connection, and enforce timeouts everywheredes2002-06-051-61/+130
| | | | | (except for DNS operations). Always use funopen() for HTTP, to support both timeouts and SSL.
* First step towards SSL support: wrap connections in a 'struct connection'des2002-06-051-24/+56
| | | | | | | | | | which contains the socket descriptor, the input buffer and (yet unused) SSL state variables. This has the neat side effect of greatly improving reentrance (though we're not *quite* there yet) and opening the door to HTTP connection caching. This commit is inspired by email conversations with and patches from Henry Whincup <henry@techiebod.com> last fall.
* Switch to a self-starting allocation scheme.des2002-02-051-10/+3
|
* Reindent, and add parentheses to return statements. Some functions indes2002-02-051-233/+230
| | | | | ftp.c and http.c now have exceedingly long lines due to deep nesting; this will be corrected by reorganizing the code in a later revision.
* Remove VT100 escapes from debugging messages now that they're enabled bydes2002-01-011-3/+3
| | | | | | | default. PR: 32988 MFC after: 3 days
* Back out part of previous commit which was gcc-centricdes2001-10-191-2/+2
|
* Tons of type, style and warning fixes that have been rotting in my tree fordes2001-10-181-5/+8
| | | | | ages - some of which wouldn't be necessary if gcc wasn't broken or TPTB were willing to do something (-fno-builtin) about it.
* Add __FBSDID()s to libfetchdillon2001-09-301-2/+3
|
* MAXPATHLEN -> PATH_MAXdes2001-05-261-1/+1
|
* Apply 'const' liberally.archie2001-04-241-9/+9
| | | | Fix some other minor glitches.
* Don't try to get the proxy port number from /etc/services.des2000-11-271-4/+0
|
* Use the documented (and historical) defaults. Centralize the decision logicdes2000-11-101-0/+34
| | | | | | in order to avoid this bug in the future. Submitted by: se
* Introduce the (undocumented) variable fetchRestartCalls, which controls whetherdes2000-07-171-2/+2
| | | | | | | or not interrupted system calls will be restarted. This fixes a bug where fetch(1) would hang (potentially forever) if a server stopped responding, because the signal handler would absorb the user's efforts to interrupt the transfer.
* Add _fetch_putln()des2000-07-111-5/+29
|
* Clean up the debugging outputdes2000-07-111-3/+2
|
* Free chunks obtained by getaddrinfo(3).ume2000-07-101-0/+1
| | | | Approved by: des
* Output newline after debugging messagedes2000-05-251-0/+1
|
* Dump com_err, it's a stinking crock of shit.des2000-05-251-45/+11
|
* IPv6 support.ume2000-05-201-22/+26
|
* Use sizeof more consistently.des2000-05-071-1/+1
|
* More old uncommitted patches: implement timeouts at the protocol level.des2000-01-071-0/+82
| | | | Currently only supported for ftp connections.
* $Id$ -> $FreeBSD$peter1999-08-281-1/+1
|
* Implement and document file list retrieval.des1998-12-211-1/+43
|
* Don't specify a language to compile_et.des1998-12-181-2/+2
| | | | Rename fetchConnect to _fetch_connect since it's internal.
* Add verbose flag, and support functions.des1998-12-161-19/+56
| | | | | | | | | Brucify the Makefile. Differentiate atime and mtime in fetch*Stat(). Fix a few pointer bugs. Tweak some error messages. Don't #include sys/param.h and stdio.h in fetch.h. Document that sys/param.h and stdio.h must be #included before fetch.h.
* Second of a series of cleanups to libfetch.des1998-11-061-18/+89
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit introduces the following features: a) the fetchStat*() functions, which return meta-information for a document, such as size, modification time, etc. b) the use of the com_err(3) facilities to report errors. It also fixes a bunch of style bugs and a few logic bugs and somewhat improves the man page. Changed files, in alphabetical order: Makefile: Don't generate macros in {ftp,http}err.c. Generate category fields for the error message lists. Compile the error table. Install fetch_err.h along with fetch.h. common.c: Remove the _netdb_errstring() macro, and add FETCH_ERR_NETDB to the error code in the _netdb_seterr() macro. Add categories to the _netdb_errlist table. Report errors through the Common Error library. common.h: Add the DEBUG macros. Add prototype for fetchConnect(). Remove the prototype for _fetch_errstring(), which is local to common.c Add a categroy field to struct fetcherr, and define constants for error categories. Define macros for _{url,netdb,ftp,http}_seterr(). errors.et: (new file) List error categories. fetch.3: Document the fetchStat*() functions. Move the "unimplemented functionality" comments from NOTES to BUGS. Document that applications which use libfetch must also use libcom_err, and list existing error codes. Undocument fetchLastErr{Code,String}. Remove the (empty) DIAGNOSTICS section. Mention Eugene Skepner in the AUTHORS section. fetch.c: Move the DEBUG macros to common.c Add fetchStat() and fetchStatURL(). Generate error messages for URL parser errors, and fix a minor bug in the parser. Use 'struct url' instead of 'url_t'. Remove fetchLastErr{Code,String}. fetch.h: Use 'struct url' instead of 'url_t', and remove the typedef. Define struct url_stat (used by fetchStat()). Add prototypes for fetchStat*(). Remove the declarations for fetchLastErr{Code,String}. Include fetch_err.h. fetch_err.et: (new file) Error table for libfetch. file.c: Add fetchStatFile(). Use 'struct url' instead of 'url_t'. ftp.c: Add fetchStatFTP(). Use 'struct url' instead of 'url_t'. Don't use fetchLastErrCode. ftp.errors: Add categories to all error messages. http.c: Add fetchStatHTTP(). Use 'struct url' instead of 'url_t'. Don't use fetchLastErr{Code,Text}. http.errors: Add categories to all error messages. Prompted by: jkh and Eugene Skepner Numerous sugestions from: Garett Wollman and Eugene Skepner
* First of a series of cleanups to libfetch. Changed files, indes1998-11-051-0/+134
alphabetical order: Makefile: Add common.c to SRCS. Make debugging easier by making 'CFLAGS += -DNDEBUG' conditional on DEBUG Don't declare struct {ftp,http}err in {ftp,http}err.c; use struct fetcherr instead. README: Remove the todo list, which is out of date anyway. common.c: (new file) Gather utility functions in this file. Merge the error reporting functions intp _fetch_errstring(), _fetch_seterr() and _fetch_syserr(). Set fetchLastErrCode and fetchLastErrText appropriately when fetchConnect fails. common.h: (new file) Gather internal prototypes and structures in this files. fetch.3: Undocument fetchFreeURL(). Document a few more known bugs. Document fetchLastErrCode and fetchLastErrText. fetch.c: Add descriptive comments to all functions that lacked them. Move fetchConnect() to common.c. Obviate the need for fetchFreeURL(), and remove it. fetch.h: Modify struct url_t so the document part is at the end. ftp.c: Remove code that is duplicated elsewhere. http.c: Remove code that is duplicated elsewhere. Prompted by: jkh
OpenPOWER on IntegriCloud