@@ -241,7 +241,7 @@ addToLibrary({
241241          addr , 
242242          port , 
243243          socket : ws , 
244-           dgram_send_queue : [ ] 
244+           msg_send_queue : [ ] 
245245        } ; 
246246
247247        SOCKFS . websocket_sock_ops . addPeer ( sock ,  peer ) ; 
@@ -254,7 +254,7 @@ addToLibrary({
254254#if SOCKET_DEBUG 
255255          dbg ( 'websocket queuing port message (port '  +  sock . sport  +  ')' ) ; 
256256#endif
257-           peer . dgram_send_queue . push ( new  Uint8Array ( [ 
257+           peer . msg_send_queue . push ( new  Uint8Array ( [ 
258258              255 ,  255 ,  255 ,  255 , 
259259              'p' . charCodeAt ( 0 ) ,  'o' . charCodeAt ( 0 ) ,  'r' . charCodeAt ( 0 ) ,  't' . charCodeAt ( 0 ) , 
260260              ( ( sock . sport  &  0xff00 )  >>  8 )  ,  ( sock . sport  &  0xff ) 
@@ -283,13 +283,13 @@ addToLibrary({
283283          Module [ 'websocket' ] . emit ( 'open' ,  sock . stream . fd ) ; 
284284
285285          try  { 
286-             var  queued  =  peer . dgram_send_queue . shift ( ) ; 
286+             var  queued  =  peer . msg_send_queue . shift ( ) ; 
287287            while  ( queued )  { 
288288#if SOCKET_DEBUG 
289289              dbg ( 'websocket sending queued data ('  +  queued . byteLength  +  ' bytes): '  +  [ Array . prototype . slice . call ( new  Uint8Array ( queued ) ) ] ) ; 
290290#endif
291291              peer . socket . send ( queued ) ; 
292-               queued  =  peer . dgram_send_queue . shift ( ) ; 
292+               queued  =  peer . msg_send_queue . shift ( ) ; 
293293            } 
294294          }  catch  ( e )  { 
295295            // not much we can do here in the way of proper error handling as we've already 
@@ -493,8 +493,9 @@ addToLibrary({
493493        sock . daddr  =  peer . addr ; 
494494        sock . dport  =  peer . port ; 
495495
496-         // always "fail" in non-blocking mode 
497-         throw  new  FS . ErrnoError ( { { {  cDefs . EINPROGRESS  } } } ) ; 
496+         // because we cannot synchronously block to wait for the WebSocket 
497+         // connection to complete, we return here pretending that the connection 
498+         // was a success. 
498499      } , 
499500      listen ( sock ,  backlog )  { 
500501        if  ( ! ENVIRONMENT_IS_NODE )  { 
@@ -605,8 +606,10 @@ addToLibrary({
605606        if  ( sock . type  ===  { { {  cDefs . SOCK_STREAM  } } } )  { 
606607          if  ( ! dest  ||  dest . socket . readyState  ===  dest . socket . CLOSING  ||  dest . socket . readyState  ===  dest . socket . CLOSED )  { 
607608            throw  new  FS . ErrnoError ( { { {  cDefs . ENOTCONN  } } } ) ; 
609+ #if SOCKET_DEBUG 
608610          }  else  if  ( dest . socket . readyState  ===  dest . socket . CONNECTING )  { 
609-             throw  new  FS . ErrnoError ( { { {  cDefs . EAGAIN  } } } ) ; 
611+             dbg ( 'socket sendmsg called while socket is still connecting.' ) ; 
612+ #endif
610613          } 
611614        } 
612615
@@ -631,21 +634,21 @@ addToLibrary({
631634        } 
632635#endif
633636
634-         // if we're emulating  a connection-less dgram socket and don't have  
635-         // a cached connection , queue the buffer  to send upon connect and  
636-         // lie, saying the data was sent now. 
637-         if  ( sock . type   ===   { { {   cDefs . SOCK_DGRAM   } } } )  { 
638-           if  ( ! dest   ||   dest . socket . readyState   !==   dest . socket . OPEN )   { 
639-              //  if we're not connected, open a new connection 
637+         // if we don't have  a cached connectionless UDP datagram connection, or  
638+         // the TCP socket is still connecting , queue the message  to be sent upon  
639+         // connect, and  lie, saying the data was sent now. 
640+         if  ( ! dest   ||   dest . socket . readyState   !==   dest . socket . OPEN )  { 
641+           //  if we're not connected, open a new connection 
642+           if  ( sock . type   ===   { { {   cDefs . SOCK_DGRAM   } } } )   { 
640643            if  ( ! dest  ||  dest . socket . readyState  ===  dest . socket . CLOSING  ||  dest . socket . readyState  ===  dest . socket . CLOSED )  { 
641644              dest =  SOCKFS . websocket_sock_ops . createPeer ( sock ,  addr ,  port ) ; 
642645            } 
646+           } 
643647#if SOCKET_DEBUG 
644-              dbg ( 'websocket queuing ('  +  length  +  ' bytes): '  +  [ Array . prototype . slice . call ( new  Uint8Array ( data ) ) ] ) ; 
648+           dbg ( 'websocket queuing ('  +  length  +  ' bytes): '  +  [ Array . prototype . slice . call ( new  Uint8Array ( data ) ) ] ) ; 
645649#endif
646-             dest . dgram_send_queue . push ( data ) ; 
647-             return  length ; 
648-           } 
650+           dest . msg_send_queue . push ( data ) ; 
651+           return  length ; 
649652        } 
650653
651654        try  { 
0 commit comments