Annotation of embedaddon/curl/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3, revision 1.1

1.1     ! misho       1: .\" **************************************************************************
        !             2: .\" *                                  _   _ ____  _
        !             3: .\" *  Project                     ___| | | |  _ \| |
        !             4: .\" *                             / __| | | | |_) | |
        !             5: .\" *                            | (__| |_| |  _ <| |___
        !             6: .\" *                             \___|\___/|_| \_\_____|
        !             7: .\" *
        !             8: .\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
        !             9: .\" *
        !            10: .\" * This software is licensed as described in the file COPYING, which
        !            11: .\" * you should have received as part of this distribution. The terms
        !            12: .\" * are also available at https://curl.haxx.se/docs/copyright.html.
        !            13: .\" *
        !            14: .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
        !            15: .\" * copies of the Software, and permit persons to whom the Software is
        !            16: .\" * furnished to do so, under the terms of the COPYING file.
        !            17: .\" *
        !            18: .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
        !            19: .\" * KIND, either express or implied.
        !            20: .\" *
        !            21: .\" **************************************************************************
        !            22: .\"
        !            23: .TH CURLOPT_TRAILERFUNCTION 3 "October 31, 2019" "libcurl 7.70.0" "curl_easy_setopt options"
        !            24: 
        !            25: .SH NAME
        !            26: CURLOPT_TRAILERFUNCTION \- Set callback for sending trailing headers
        !            27: .SH SYNOPSIS
        !            28: #include <curl.h>
        !            29: 
        !            30: int curl_trailer_callback(struct curl_slist ** list, void *userdata);
        !            31: 
        !            32: CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRAILERFUNCTION, curl_trailer_callback *func);
        !            33: .SH DESCRIPTION
        !            34: Pass a pointer to a callback function.
        !            35: 
        !            36: This callback function will be called once right before sending the final
        !            37: CR LF in an HTTP chunked transfer to fill a list of trailing headers to be
        !            38: sent before finishing the HTTP transfer.
        !            39: 
        !            40: You can set the userdata argument with the CURLOPT_TRAILERDATA option.
        !            41: 
        !            42: The trailing headers included in the linked list must not be CRLF-terminated,
        !            43: because libcurl will add the appropriate line termination characters after
        !            44: each header item.
        !            45: 
        !            46: If you use curl_slist_append to add trailing headers to the curl_slist then
        !            47: libcurl will duplicate the strings, and will free the curl_slist and the
        !            48: duplicates once the trailers have been sent.
        !            49: 
        !            50: If one of the trailing headers is not formatted correctly
        !            51: (i.e. HeaderName: headerdata) it will be ignored and an info message
        !            52: will be emitted.
        !            53: 
        !            54: The return value can either be CURL_TRAILERFUNC_OK or CURL_TRAILERFUNC_ABORT
        !            55: which would respectively instruct libcurl to either continue with sending the
        !            56: trailers or to abort the request.
        !            57: 
        !            58: If you set this option to NULL, then the transfer proceeds as usual
        !            59: without any interruptions.
        !            60: .SH DEFAULT
        !            61: NULL
        !            62: .SH PROTOCOLS
        !            63: HTTP
        !            64: .SH EXAMPLE
        !            65: #include <curl/curl.h>
        !            66: 
        !            67: static int trailer_cb(struct curl_slist **tr, void *data)
        !            68: {
        !            69:   /* libcurl will free the list */
        !            70:   tr = curl_slist_append(*tr, "My-super-awesome-trailer: trailer-stuff");
        !            71:   return CURL_TRAILERFUNC_OK;
        !            72: }
        !            73: 
        !            74: CURL *curl = curl_easy_init();
        !            75: if(curl) {
        !            76:   /* Set the URL of the request */
        !            77:   curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/");
        !            78:   /* Now set it as a put */
        !            79:   curl_easy_setopt(curl, CURLOPT_PUT, 1L);
        !            80: 
        !            81:   /* Assuming we have a function that will return the data to be pushed
        !            82:      Let that function be read_cb */
        !            83:   curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_cb);
        !            84: 
        !            85:   struct curl_slist *headers = NULL;
        !            86:   headers = curl_slist_append(headers, "Trailer: My-super-awsome-trailer");
        !            87:   res = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
        !            88: 
        !            89:   /* Set the trailers filling callback */
        !            90:   curl_easy_setopt(curl, CURLOPT_TRAILERFUNCTION, trailer_cb);
        !            91: 
        !            92:   /* Perform the request, res will get the return code */
        !            93:   res = curl_easy_perform(curl);
        !            94: 
        !            95:   curl_easy_cleanup(curl);
        !            96: 
        !            97:   curl_slist_free_all(headers);
        !            98: }
        !            99: .SH AVAILABILITY
        !           100: This option was added in curl 7.64.0 and is present if HTTP support is enabled
        !           101: .SH "SEE ALSO"
        !           102: .BR CURLOPT_TRAILERDATA "(3), "

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>