@@ -80,10 +80,24 @@ int platform_net_socket_recv_timeout(int fd, unsigned char *buf, int len, int ti
80
80
}
81
81
return len - nleft ;
82
82
}
83
+ ssize_t write_check_tcp (int __fd , __const void * __buf , size_t __n )
84
+ {
85
+ struct tcp_info info ;
86
+ socklen_t _len = sizeof (info );
87
+ getsockopt (__fd , IPPROTO_TCP , TCP_INFO , & info , (socklen_t * )& _len );
88
+ if ((info .tcpi_state == TCP_ESTABLISHED ))
89
+ {
90
+ return write (__fd , __buf , __n );
91
+ }
92
+ else
93
+ {
94
+ return -1 ;
95
+ }
96
+ }
83
97
84
98
int platform_net_socket_write (int fd , void * buf , size_t len )
85
99
{
86
- return write (fd , buf , len );
100
+ return write_check_tcp (fd , buf , len );
87
101
}
88
102
89
103
int platform_net_socket_write_timeout (int fd , unsigned char * buf , int len , int timeout )
@@ -99,8 +113,8 @@ int platform_net_socket_write_timeout(int fd, unsigned char *buf, int len, int t
99
113
}
100
114
101
115
setsockopt (fd , SOL_SOCKET , SO_SNDTIMEO , (char * )& tv ,sizeof (struct timeval ));
102
-
103
- return write (fd , buf , len );
116
+
117
+ return write_check_tcp (fd , buf , len );
104
118
}
105
119
106
120
int platform_net_socket_close (int fd )
0 commit comments