| Index: extensions/browser/api/cast_channel/cast_channel_api.cc
|
| diff --git a/extensions/browser/api/cast_channel/cast_channel_api.cc b/extensions/browser/api/cast_channel/cast_channel_api.cc
|
| index 4355e0e418463847d6305a24e9cb592eff2b41a9..fe16cf2f3e5992eaafb55b614ed1375b7097da1a 100644
|
| --- a/extensions/browser/api/cast_channel/cast_channel_api.cc
|
| +++ b/extensions/browser/api/cast_channel/cast_channel_api.cc
|
| @@ -346,12 +346,18 @@ void CastChannelOpenFunction::AsyncWorkStart() {
|
| void CastChannelOpenFunction::OnOpen(cast_channel::ChannelError result) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| VLOG(1) << "Connect finished, OnOpen invoked.";
|
| - CastSocket* socket = GetSocket(new_channel_id_);
|
| - if (!socket) {
|
| - SetResultFromError(new_channel_id_, result);
|
| - } else {
|
| + // TODO: If we failed to open the CastSocket, we may want to clean up here,
|
| + // rather than relying on the extension to call close(). This can be done by
|
| + // calling RemoveSocket() and api_->GetLogger()->ClearLastErrors(channel_id).
|
| + if (result != cast_channel::CHANNEL_ERROR_UNKNOWN) {
|
| + CastSocket* socket = GetSocket(new_channel_id_);
|
| + CHECK(socket);
|
| SetResultFromSocket(*socket);
|
| + } else {
|
| + // The socket is being destroyed.
|
| + SetResultFromError(new_channel_id_, result);
|
| }
|
| +
|
| AsyncWorkCompleted();
|
| }
|
|
|
|
|