### Eclipse Workspace Patch 1.0
#P wordpress-trunk
|
|
|
409 | 409 | * @return array Processed string headers. If duplicate headers are encountered, |
410 | 410 | * Then a numbered array is returned as the value of that header-key. |
411 | 411 | */ |
412 | | function processHeaders($headers) { |
| 412 | function processHeaders( $headers ) { |
413 | 413 | // split headers, one per array element |
414 | | if ( is_string($headers) ) { |
| 414 | if ( is_string( $headers ) ) { |
415 | 415 | // tolerate line terminator: CRLF = LF (RFC 2616 19.3) |
416 | | $headers = str_replace("\r\n", "\n", $headers); |
| 416 | $headers = str_replace( "\r\n", "\n", $headers ); |
417 | 417 | // unfold folded header fields. LWS = [CRLF] 1*( SP | HT ) <US-ASCII SP, space (32)>, <US-ASCII HT, horizontal-tab (9)> (RFC 2616 2.2) |
418 | | $headers = preg_replace('/\n[ \t]/', ' ', $headers); |
| 418 | $headers = preg_replace( '/\n[ \t]/', ' ', $headers ); |
419 | 419 | // create the headers array |
420 | | $headers = explode("\n", $headers); |
| 420 | $headers = explode( "\n", $headers ); |
421 | 421 | } |
422 | 422 | |
423 | | $response = array('code' => 0, 'message' => ''); |
424 | | |
425 | 423 | // If a redirection has taken place, The headers for each page request may have been passed. |
426 | 424 | // In this case, determine the final HTTP header and parse from there. |
427 | | for ( $i = count($headers)-1; $i >= 0; $i-- ) { |
428 | | if ( !empty($headers[$i]) && false === strpos($headers[$i], ':') ) { |
| 425 | for ( $i = count( $headers )-1; $i >= 0; $i-- ) { |
| 426 | if ( !empty( $headers[$i] ) && false === strpos($headers[$i], ':') ) { |
429 | 427 | $headers = array_splice($headers, $i); |
430 | 428 | break; |
431 | 429 | } |
432 | 430 | } |
433 | 431 | |
434 | | $cookies = array(); |
| 432 | $response = array( 'code' => 0, 'message' => '', 'toset' => true ); |
435 | 433 | $newheaders = array(); |
| 434 | $cookies = array(); |
| 435 | |
436 | 436 | foreach ( $headers as $tempheader ) { |
437 | | if ( empty($tempheader) ) |
| 437 | if ( empty( $tempheader ) ) |
438 | 438 | continue; |
439 | 439 | |
440 | | if ( false === strpos($tempheader, ':') ) { |
441 | | list( , $response['code'], $response['message']) = explode(' ', $tempheader, 3); |
| 440 | if ( false === strpos( $tempheader, ':' ) ) { |
| 441 | if ( $response['toset'] ) { |
| 442 | list( , $response['code'], $response['message'] ) = explode( ' ', $tempheader, 3 ); |
| 443 | $response['toset'] = false; |
| 444 | } |
442 | 445 | continue; |
443 | 446 | } |
444 | 447 | |
445 | | list($key, $value) = explode(':', $tempheader, 2); |
| 448 | list( $key, $value ) = explode( ':', $tempheader, 2 ); |
446 | 449 | |
447 | | if ( !empty( $value ) ) { |
448 | | $key = strtolower( $key ); |
449 | | if ( isset( $newheaders[$key] ) ) { |
450 | | if ( !is_array($newheaders[$key]) ) |
451 | | $newheaders[$key] = array($newheaders[$key]); |
452 | | $newheaders[$key][] = trim( $value ); |
453 | | } else { |
454 | | $newheaders[$key] = trim( $value ); |
455 | | } |
456 | | if ( 'set-cookie' == strtolower( $key ) ) |
457 | | $cookies[] = new WP_Http_Cookie( $value ); |
458 | | } |
| 450 | if ( empty( $value ) ) |
| 451 | continue; |
| 452 | |
| 453 | $key = strtolower( $key ); |
| 454 | |
| 455 | if ( isset( $newheaders[$key] ) ) |
| 456 | $newheaders[$key] .= ','; |
| 457 | else |
| 458 | $newheaders[$key] = ''; |
| 459 | $newheaders[$key] .= trim( $value ); |
| 460 | |
| 461 | if ( 'set-cookie' == $key ) |
| 462 | $cookies[] = new WP_Http_Cookie( $value ); |
459 | 463 | } |
460 | 464 | |
461 | 465 | return array('response' => $response, 'headers' => $newheaders, 'cookies' => $cookies); |