summaryrefslogtreecommitdiffstats
path: root/net/http/http_network_layer_unittest.cc
Commit message (Collapse)AuthorAgeFilesLines
* Merge 252982 "Do not bypass data reduction proxy when 304 lacks ..."bengr@chromium.org2014-02-241-6/+24
| | | | | | | | | | | | | | | | | | > Do not bypass data reduction proxy when 304 lacks via header > > Chrome will bypass the data reduction proxy if the proxy's via > header is absent and the response is not a 304. > > BUG=346346 > R=mef@chromium.org > > Review URL: https://codereview.chromium.org/178273003 TBR=zea@chromium.org Review URL: https://codereview.chromium.org/177073009 git-svn-id: svn://svn.chromium.org/chrome/branches/1750/src@252991 0039d316-1c4b-4281-b951-d872f2087c98
* Merge 249184 "Bypass data reduction proxy if response not via it"bengr@chromium.org2014-02-061-7/+67
| | | | | | | | | | | | | | | | | | > Bypass data reduction proxy if response not via it > > The change verifies that a request sent to the data reduction > proxy has a corresponding response that contains the data > reduction proxy's Via header. > > BUG=335633 > > Review URL: https://codereview.chromium.org/144653007 TBR=bengr@chromium.org Review URL: https://codereview.chromium.org/135123012 git-svn-id: svn://svn.chromium.org/chrome/branches/1750/src@249415 0039d316-1c4b-4281-b951-d872f2087c98
* Merge 242128 "Retry idempotent methods on Chrome-Proxy: bypass"bengr@chromium.org2014-01-061-18/+108
| | | | | | | | | | | | | | | | | | | | | | > Retry idempotent methods on Chrome-Proxy: bypass > > Requests using all idempotent HTTP methods (See RFC 2616) should be > retried after receiving a bypass message from the data reduction > proxy. Before this CL, only GET was being retried. > > BUG=327740 > > Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=241714 > > Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=241927 > > Review URL: https://codereview.chromium.org/99283006 TBR=bengr@chromium.org Review URL: https://codereview.chromium.org/123833006 git-svn-id: svn://svn.chromium.org/chrome/branches/1750/src@243112 0039d316-1c4b-4281-b951-d872f2087c98
* Accept Chrome-Proxy: block=xxx to bypass all Chrome proxiesbengr@chromium.org2013-12-131-13/+48
| | | | | | | | BUG=325333 Review URL: https://codereview.chromium.org/98373005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240737 0039d316-1c4b-4281-b951-d872f2087c98
* Bypass data reduction proxy on 503 responsesbengr@chromium.org2013-12-111-4/+6
| | | | | | | | BUG=327407 Review URL: https://codereview.chromium.org/107123004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@239955 0039d316-1c4b-4281-b951-d872f2087c98
* Bypass data reduction proxy on 502 responsesbengr@chromium.org2013-12-091-55/+67
| | | | | | | | BUG=325401 Review URL: https://codereview.chromium.org/103003002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@239508 0039d316-1c4b-4281-b951-d872f2087c98
* Added support for a new HTTP response header called Chrome-Proxy, which is ↵bengr@chromium.org2013-10-281-30/+84
| | | | | | | | | | restricted to only the data compression proxy. The header carries a comma-separated list of instructions for proxy/Chrome interaction. This change introduces one instruction, "bypass," which specifies a number of seconds that Chrome should bypass the proxy. BUG=306631 Review URL: https://codereview.chromium.org/26515005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231404 0039d316-1c4b-4281-b951-d872f2087c98
* Fix for proxy-bypass support on iOS.marq@chromium.org2013-10-201-115/+209
| | | | | | | | BUG=300178 Review URL: https://codereview.chromium.org/25776002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@229661 0039d316-1c4b-4281-b951-d872f2087c98
* [SPDY] Use WeakPtr<HttpServerProperties> instead of raw pointersakalin@chromium.org2013-07-181-1/+2
| | | | | | | | | | | | | | | This will let us better track down what is causing SpdySessions to be accessing them after they're destroyed, since we'll have crash reports instead of just the SyzyASAN reports. Also use scoped_ptr<HttpServerProperties> when appropriate. BUG=236451 TBR=ajwong@chromium.org, rtenneti@chromium.org, simonjam@chromium.org, wez@chromium.org Review URL: https://codereview.chromium.org/19731002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@212466 0039d316-1c4b-4281-b951-d872f2087c98
* Give more request types a TransportSecurityState.palmer@chromium.org2013-06-131-0/+4
| | | | | | | | | | | | DCHECK on NULL TransportSecurityState, as a precursor to a real CHECK. It should be an error to try to connect with an SSL client socket without having a live TSS. BUG=246724 Review URL: https://chromiumcodereview.appspot.com/16501002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@206013 0039d316-1c4b-4281-b951-d872f2087c98
* Use a direct include of strings headers in net/http/.avi@chromium.org2013-06-111-1/+1
| | | | | | | | | | BUG=247723 TEST=none TBR=ben@chromium.org Review URL: https://chromiumcodereview.appspot.com/15906017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@205594 0039d316-1c4b-4281-b951-d872f2087c98
* Update net/ to use scoped_refptr<T>::get() rather than implicit "operator T*"rsleevi@chromium.org2013-06-011-2/+2
| | | | | | | | | | | Linux fixes BUG=110610 TBR=darin Review URL: https://chromiumcodereview.appspot.com/15829004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203535 0039d316-1c4b-4281-b951-d872f2087c98
* Bypass data reduction proxy on receipt of a 500 response codebengr@chromium.org2013-05-151-0/+78
| | | | | | | | BUG=238844 Review URL: https://chromiumcodereview.appspot.com/14865009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@200153 0039d316-1c4b-4281-b951-d872f2087c98
* Implement offline mode behind a flag.rdsmith@chromium.org2013-04-201-6/+75
| | | | | | | | BUG=2204 Review URL: https://chromiumcodereview.appspot.com/12886022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@195374 0039d316-1c4b-4281-b951-d872f2087c98
* net: extract net/cert out of net/basephajdan.jr@chromium.org2013-03-291-1/+1
| | | | | | | | | | | | This introduces the following dependency of net/base on things outside: net/base/openssl_client_key_store.cc:#include "net/cert/x509_certificate.h" BUG=70818 Review URL: https://codereview.chromium.org/13006020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@191450 0039d316-1c4b-4281-b951-d872f2087c98
* net: move host_resolver files from net/base to net/dnsphajdan.jr@chromium.org2013-03-211-1/+1
| | | | | | | | BUG=70818 Review URL: https://codereview.chromium.org/12518036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@189485 0039d316-1c4b-4281-b951-d872f2087c98
* [Net] Separate out priority field from HttpRequestInfoakalin@chromium.org2013-03-191-8/+8
| | | | | | | | | | | | | | This is in preparation for supporting reprioritization; HttpRequestInfo is assumed to be an unchanging struct, so priority can't live in it if it is something that can change. Also add DEFAULT_PRIORITY value and replace some uses of LOWEST with it. BUG=166689 Review URL: https://codereview.chromium.org/12833008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@189099 0039d316-1c4b-4281-b951-d872f2087c98
* net: split net/ssl out of net/basephajdan.jr@chromium.org2013-03-141-1/+1
| | | | | | | | | | | | | | | Also moves transport_security_state files to net/http. This change also updates the callers. R=wtc TBR=rsleevi,lambroslambrou,tony BUG=70818 Review URL: https://codereview.chromium.org/12680003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@188119 0039d316-1c4b-4281-b951-d872f2087c98
* Receiving Connection: Proxy-Bypass induces proxy fallback.piatek@google.com2012-10-161-5/+180
| | | | | | | | | BUG=143712 Review URL: https://chromiumcodereview.appspot.com/10987043 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@162218 0039d316-1c4b-4281-b951-d872f2087c98
* Adding histograms showing fraction of page load times spent in the disk ↵tburkard@chromium.org2012-07-301-5/+5
| | | | | | | | | | cache, for full and partial page loads. R=mmenke@chromium.org, jam@chromium.org, willchan@chromium.org, brettw@chromium.org BUG=139210 Review URL: https://chromiumcodereview.appspot.com/10736066 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149007 0039d316-1c4b-4281-b951-d872f2087c98
* Implement a MockCertVerifier that can be used to avoidrsleevi@chromium.org2012-04-101-2/+2
| | | | | | | | | | | | | | | calling OS API routines for certificate verification. This allows tests that depend on SSL to cycle noticably faster, particularly when under memory instrumentation. R=wtc BUG=none TEST=existing unittests Review URL: http://codereview.chromium.org/9956047 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@131509 0039d316-1c4b-4281-b951-d872f2087c98
* Make CertVerifier a pure virtual interface.rsleevi@chromium.org2012-03-211-4/+6
| | | | | | | | | | | | | The existing CertVerifier implementation has been renamed to MultiThreadedCertVerifier, consistent with ProxyResolver naming. This is patch 1 of N for http://crbug.com/114343 BUG=114343 TEST=Compiles and existing unittests pass. Review URL: https://chromiumcodereview.appspot.com/9476035 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128090 0039d316-1c4b-4281-b951-d872f2087c98
* Change MockRead and MockWrite (et. al.) to take an IoMode enum, insteadrch@chromium.org2012-02-231-2/+2
| | | | | | | | of a bool async. Review URL: http://codereview.chromium.org/9425016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@123274 0039d316-1c4b-4281-b951-d872f2087c98
* base::Bind: Convert most of net/http.jhawkins@chromium.org2011-12-201-2/+2
| | | | | | | | | | BUG=none TEST=none R=csilv Review URL: http://codereview.chromium.org/8990001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@115220 0039d316-1c4b-4281-b951-d872f2087c98
* Migrate HttpAlternateProtocols to HttpServerPropertiesImpl.willchan@chromium.org2011-10-101-0/+3
| | | | | | | | | | | | | Hooks in HttpServerPropertiesManager also. No persistence done yet. This is all plumbing. Also require HttpServerProperties in HttpNetworkSession::Params. BUG=98472 TEST=none Review URL: http://codereview.chromium.org/8211003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104696 0039d316-1c4b-4281-b951-d872f2087c98
* Begin CompletionCallback switchover.willchan@chromium.org2011-10-011-1/+1
| | | | | | | | | | | | | Rename CompletionCallback to OldCompletionCallback in preparation for introducing a new CompletionCallback based on base::Callback. Also renames other CompletionCallback types like CancelableCompletionCallback and TestCompletionCallback and CompletionCallbackImpl. All using sed with s/CompletionCallback/OldCompletionCallback/g. BUG=98719 TEST=none Review URL: http://codereview.chromium.org/8070013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103650 0039d316-1c4b-4281-b951-d872f2087c98
* Kill URLRequestJobTracker.willchan@chromium.org2011-05-221-2/+2
| | | | | | | | | | BUG=81160 TEST=none Review URL: http://codereview.chromium.org/7043007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86241 0039d316-1c4b-4281-b951-d872f2087c98
* Stop refcounting ProxyService.willchan@chromium.org2011-04-271-3/+3
| | | | | | | | | BUG=none TEST=none Review URL: http://codereview.chromium.org/6873096 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83222 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor HttpNetworkSession construction.willchan@chromium.org2011-02-031-69/+32
| | | | | | | | | | | Introduce HttpNetworkSession::Params. This should make it easy to add new optionally NULL parameters. I also took this opportunity to eliminate some copy/pastes of TestURLRequestContext and make them use the original. I was also able to remove the need for ClientSocketFactory::GetDefaultFactory() calls and new SpdySessionPool() calls in most places. BUG=none TEST=none Review URL: http://codereview.chromium.org/6349028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73669 0039d316-1c4b-4281-b951-d872f2087c98
* Simplify HttpCache/HttpNetworkLayer/HttpNetworkSession interaction.willchan@chromium.org2011-01-281-64/+78
| | | | | | | | | | | | | Eliminate lazy initialization of HttpNetworkSession in HttpNetworkLayer. * This eliminates the need to update parameters for HttpNetworkLayer, it just takes a HttpNetworkSession. * It is OK to eliminate lazy initialization since these variables are cheap. BUG=none TEST=none Review URL: http://codereview.chromium.org/6402002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72931 0039d316-1c4b-4281-b951-d872f2087c98
* Cache certificate verification results in memory.wtc@google.com2010-12-161-0/+7
| | | | | | | | | R=agl BUG=63357 TEST=none Review URL: http://codereview.chromium.org/5386001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69414 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Revert "net: Plumb DnsCertProvenanceChecker around.""agl@chromium.org2010-11-221-0/+3
| | | | | | (See r66623 for details.) git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66985 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "net: Plumb DnsCertProvenanceChecker around."agl@chromium.org2010-11-221-3/+0
| | | | | | This reverts commit r66970. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66974 0039d316-1c4b-4281-b951-d872f2087c98
* net: Plumb DnsCertProvenanceChecker around.agl@chromium.org2010-11-221-0/+3
| | | | | | (Reland of r66623, reverted in r66687 due to Chrome Frame linking issues.) git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66970 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "net: Plumb DnsCertProvenanceChecker around."agl@chromium.org2010-11-181-3/+0
| | | | | | | This reverts commit r66623. Some how it causes libnspr4.dll to be linked in Chrome Frame builds. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66687 0039d316-1c4b-4281-b951-d872f2087c98
* net: Plumb DnsCertProvenanceChecker around.agl@chromium.org2010-11-181-0/+3
| | | | | | | | | | | | | | | | | | | | | | | DnsCertProvenanceChecker is introduced to abstract away the action of uploading reports. It's implemented by ChromeDnsCertProvenanceChecker which lives in a scoped_ptr off of a URLRequestContext. It's only active on the main context (i.e. not in incognito mode). This might change in the future, but it's a nice, conservative choice for the moment. The DnsCertProvenanceChecker is plumbed all the way to SSLClientSocket (via HttpCache) where it replaces the DnsRRResolver. Above SSLClientSocket, it's plumbed in addition to the DnsRRResolver because the later will end up going into SSLHostInfo in the future. At the moment, ChromeDnsCertProvenanceCheckerContext is just a skeleton to avoid putting too much real code in a plumbing job. BUG=none TEST=none git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66623 0039d316-1c4b-4281-b951-d872f2087c98
* net: restart on NPN misprediction and add tests for Snap Start errors.agl@chromium.org2010-11-111-1/+1
| | | | | | | | | | | | | | | | Restart an HTTP load when we mispredict the NPN protocol in a Snap Start connection. Also, test the behaviour of the HTTP layer when SSL errors result from the first Write() call. When we are doing Snap Start, we need to merge the first application data record into the ClientHello. Thus the SSL socket will report that it has connected immedately in order to get a Write() call. This means that some errors, which would typically result from the Connect(), are now returned on the first Write(). BUG=none TEST=net_unittests git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65837 0039d316-1c4b-4281-b951-d872f2087c98
* Revert revert 62918 - net: clean up SSLHostInfo construction."agl@chromium.org2010-10-191-0/+3
| | | | | | | Was reverted in r62922 due to a change landing between the try run and the commit. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63046 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 62918 - net: clean up SSLHostInfo construction.agl@chromium.org2010-10-181-3/+0
| | | | | | | | | | | | | | | | Create an SSLHostInfoFactory interface and plumb it from the HttpCache to the SSLConnectJob. Also, move the SSLHostInfo reference from the ssl_config to being passed to the SSLClientSocket. BUG=none TEST=net_unittests Review URL: http://codereview.chromium.org/3747003 TBR=agl@chromium.org Review URL: http://codereview.chromium.org/3846005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62922 0039d316-1c4b-4281-b951-d872f2087c98
* net: clean up SSLHostInfo construction.agl@chromium.org2010-10-181-0/+3
| | | | | | | | | | | | | Create an SSLHostInfoFactory interface and plumb it from the HttpCache to the SSLConnectJob. Also, move the SSLHostInfo reference from the ssl_config to being passed to the SSLClientSocket. BUG=none TEST=net_unittests Review URL: http://codereview.chromium.org/3747003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62918 0039d316-1c4b-4281-b951-d872f2087c98
* Revert revert "net: plumb DnsRRResolver from IOThread to HttpNetworkSession."agl@chromium.org2010-10-081-0/+3
| | | | | | | Landed in r61789, reverted in r61801 in case it was causing Vista Tests (dbg)(1) to crash. Turns out that it wasn't, so this is the reland. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61954 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "net: plumb DnsRRResolver from IOThread to HttpNetworkSession."agl@chromium.org2010-10-071-3/+0
| | | | | | This reverts r61789. It may have broken Vista Tests (dbg), maybe. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61801 0039d316-1c4b-4281-b951-d872f2087c98
* net: plumb DnsRRResolver from IOThread to HttpNetworkSession.agl@chromium.org2010-10-071-0/+3
| | | | | | | | | | | | This patch gets us most of the way. The next patch finishes plumbing into the SSL client socket pool. BUG=none TEST=none http://codereview.chromium.org/3533013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61789 0039d316-1c4b-4281-b951-d872f2087c98
* Stop refcounting HostResolver.willchan@chromium.org2010-10-011-9/+35
| | | | | | | | | BUG=46049 TEST=none Review URL: http://codereview.chromium.org/3601002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61256 0039d316-1c4b-4281-b951-d872f2087c98
* Reland 59362 - net: Rename ProxyService::CreateNull to ↵tfarina@chromium.org2010-09-151-6/+6
| | | | | | | | | | | | | | | | | | | | | ProxyService::CreateDirect. (Note: This was a TODO for eroman). BUG=None TEST=trybots Review URL: http://codereview.chromium.org/3336021 Revert Review URL: http://codereview.chromium.org/3444001/show TBR=eroman@chromium.org Fix the bad git svn rebase (that caused a bad merge, that integrates other files in the original cl, now this should be fixed). Review URL: http://codereview.chromium.org/3413008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59481 0039d316-1c4b-4281-b951-d872f2087c98
* Trying to green up the tree, lots of mac and win red around this cl.thomasvl@chromium.org2010-09-141-6/+6
| | | | | | | | | | | | | | | | Revert 59362 - net: Rename ProxyService::CreateNull to ProxyService::CreateDirect. (Note: This was a TODO for eroman). BUG=None TEST=trybots Review URL: http://codereview.chromium.org/3336021 TBR=tfarina@chromium.org Review URL: http://codereview.chromium.org/3444001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59373 0039d316-1c4b-4281-b951-d872f2087c98
* net: Rename ProxyService::CreateNull to ProxyService::CreateDirect.tfarina@chromium.org2010-09-141-6/+6
| | | | | | | | | | | (Note: This was a TODO for eroman). BUG=None TEST=trybots Review URL: http://codereview.chromium.org/3336021 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59362 0039d316-1c4b-4281-b951-d872f2087c98
* Massively simplify the NetworkChangeNotifier infrastructure:pkasting@chromium.org2010-06-251-11/+9
| | | | | | | | | | | | | | * Use a process-wide object (singleton pattern) * Create/destroy this object on the main thread, make it outlive all consumers * Make observer-related functions threadsafe As a result, the notifier can now be used by any thread (eliminating things like NetworkChangeObserverProxy and NetworkChangeNotifierProxy, and expanding its usefulness); its creation and inner workings are much simplified (eliminating implementation-specific classes); and it is simpler to access (eliminating things like NetworkChangeNotifierThread and a LOT of passing pointers around). BUG=none TEST=Unittests; network changes still trigger notifications Review URL: http://codereview.chromium.org/2802015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50895 0039d316-1c4b-4281-b951-d872f2087c98
* Add a net::HttpNetworkDelegate and a ChromeNetworkDelegate.willchan@chromium.org2010-06-151-3/+3
| | | | | | | | | net::HttpNetworkDelegate is an interface for providing hooks into http network activity. ChromeNetworkDelgate implements this interface in chrome/ code. In the future, it might also implement other interfaces. My only current intended consumer for this would be extensions. There's no actual behavior change, this is all just plumbing for now. BUG=29314 Review URL: http://codereview.chromium.org/2749015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49804 0039d316-1c4b-4281-b951-d872f2087c98
* Rework the logging for sockets/connectjobs.eroman@chromium.org2010-06-031-3/+3
| | | | | | | | | | | | | | | | | | In particular, make it work better when using backup jobs / late binding (the display was very confused before because of how these asynchronous events would nest). Also changed the paradigm for how PassiveLogCollector preserves these async associations -- this fixes how it replays the events to net-internals. (Before we would collapse the event streams into the SOURCE_URL_REQUEST which lost some hiearchy.. now I keep the separate streams). Some of the particular changes to the event streams: * ConnectJobs now create their own source stream internally. * Sockets are now bounded by +SOCKET_ALIVE / -SOCKET_ALIVE events (removed the one-off SOCKET_DONE event). * The socket log streams contains +SOCKET_IN_USE / -SOCKET_IN_USE event blocks to show which URLRequest was controlling it at various points in time (this makes it much easier to understand which read/writes belonged to a particular network transaction when a socket gets re-used). * ConnectJobs are bounded by +SOCKET_POOL_CONNECT_JOB / - SOCKET_POOL_CONNECT_JOB events. * ConnectJobs log the net error they failed with. * Removed the SOCKET_BACKUP_TIMER_EXTENDED event. Review URL: http://codereview.chromium.org/2363003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48797 0039d316-1c4b-4281-b951-d872f2087c98