mirror of
https://github.com/eddyem/eddys_snippets.git
synced 2025-12-06 02:35:12 +03:00
remove bug with sockets: write->send(..., MSG_NOSIGNAL)
This commit is contained in:
parent
76a1ec0e81
commit
9a06693673
@ -68,7 +68,7 @@ frame.can_dlc = 6;
|
|||||||
frame.can_id = 0xaa;
|
frame.can_id = 0xaa;
|
||||||
const uint8_t d[] = {1, 2, 3, 4, 5, 6, 0, 0};
|
const uint8_t d[] = {1, 2, 3, 4, 5, 6, 0, 0};
|
||||||
memcpy(&frame.data, d, 8);
|
memcpy(&frame.data, d, 8);
|
||||||
int n = write(sock, &frame, sizeof(struct can_frame));
|
int n = send(sock, &frame, sizeof(struct can_frame), MSG_NOSIGNAL);
|
||||||
if(sizeof(struct can_frame) != n){
|
if(sizeof(struct can_frame) != n){
|
||||||
printf("n=%d\n", n);
|
printf("n=%d\n", n);
|
||||||
WARN("write()");
|
WARN("write()");
|
||||||
|
|||||||
@ -123,7 +123,7 @@ void sendmessage(int fd, const char *msg, int l){
|
|||||||
char *tmpbuf = MALLOC(char, l+1);
|
char *tmpbuf = MALLOC(char, l+1);
|
||||||
memcpy(tmpbuf, msg, l);
|
memcpy(tmpbuf, msg, l);
|
||||||
if(msg[l-1] != '\n') tmpbuf[l++] = '\n';
|
if(msg[l-1] != '\n') tmpbuf[l++] = '\n';
|
||||||
if(l != write(fd, tmpbuf, l)){
|
if(l != send(fd, tmpbuf, l, MSG_NOSIGNAL)){
|
||||||
LOGWARN("write()");
|
LOGWARN("write()");
|
||||||
WARN("write()");
|
WARN("write()");
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
@ -97,7 +97,7 @@ static int send_data(int sock, int webquery, char *textbuf){
|
|||||||
WARN("sprintf()");
|
WARN("sprintf()");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if(L != write(sock, tbuf, L)){
|
if(L != send(sock, tbuf, L, MSG_NOSIGNAL)){
|
||||||
WARN("write");
|
WARN("write");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,7 +39,7 @@ static int handle_socket(int sock, TTY_descr *d){
|
|||||||
buff[rd] = 0;
|
buff[rd] = 0;
|
||||||
DBG("GOT: %s", buff);
|
DBG("GOT: %s", buff);
|
||||||
ssize_t blen = strlen(buff);
|
ssize_t blen = strlen(buff);
|
||||||
if(blen != write(d->comfd, buff, blen)){
|
if(blen != send(d->comfd, buff, blen, MSG_NOSIGNAL)){
|
||||||
LOGWARN("write()");
|
LOGWARN("write()");
|
||||||
WARN("write()");
|
WARN("write()");
|
||||||
}
|
}
|
||||||
@ -193,7 +193,7 @@ static void server_(int sock, TTY_descr *d){
|
|||||||
}
|
}
|
||||||
if(serdata){
|
if(serdata){
|
||||||
for(int i = 1; i < nfd; ++i)
|
for(int i = 1; i < nfd; ++i)
|
||||||
if(l != write(poll_set[i].fd, serdata, l)){
|
if(l != send(poll_set[i].fd, serdata, l, MSG_NOSIGNAL)){
|
||||||
LOGWARN("write()");
|
LOGWARN("write()");
|
||||||
WARN("write()");
|
WARN("write()");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -119,17 +119,17 @@ void *handle_socket(void *asock){
|
|||||||
"Content-type: text/html\r\nContent-Length: %d\r\n\r\n"
|
"Content-type: text/html\r\nContent-Length: %d\r\n\r\n"
|
||||||
"sum=%d\n", l, newx);
|
"sum=%d\n", l, newx);
|
||||||
}else L = l;
|
}else L = l;
|
||||||
if(L != (size_t)write(sock, obuff, L)) WARN("write");
|
if(L != (size_t)send(sock, obuff, L, MSG_NOSIGNAL)) WARN("write");
|
||||||
DBG("\nWRITE TO client: %s\n", obuff);
|
DBG("\nWRITE TO client: %s\n", obuff);
|
||||||
}else{ // simply copy back all data
|
}else{ // simply copy back all data
|
||||||
size_t blen = strlen(buff);
|
size_t blen = strlen(buff);
|
||||||
if(webquery){
|
if(webquery){
|
||||||
L = snprintf(obuff, BUFLEN, "HTTP/2.0 200 OK\r\nContent-type: text/html\r\n"
|
L = snprintf(obuff, BUFLEN, "HTTP/2.0 200 OK\r\nContent-type: text/html\r\n"
|
||||||
"Content-Length: %zd\r\n\r\n", blen);
|
"Content-Length: %zd\r\n\r\n", blen);
|
||||||
if(L != write(sock, obuff, L)) WARN("write()");
|
if(L != send(sock, obuff, L, MSG_NOSIGNAL)) WARN("write()");
|
||||||
}
|
}
|
||||||
++blen;
|
++blen;
|
||||||
if(blen != write(sock, buff, blen)) WARN("write()");
|
if(blen != send(sock, buff, blen, MSG_NOSIGNAL)) WARN("write()");
|
||||||
}
|
}
|
||||||
if(webquery) break; // close connection if this is a web query
|
if(webquery) break; // close connection if this is a web query
|
||||||
}
|
}
|
||||||
|
|||||||
@ -95,7 +95,7 @@ char* stringscan(char *str, char *needle){
|
|||||||
* @return 0 if failed
|
* @return 0 if failed
|
||||||
*/
|
*/
|
||||||
int send_data(uint8_t *data, size_t dlen, int sockfd){
|
int send_data(uint8_t *data, size_t dlen, int sockfd){
|
||||||
size_t sent = write(sockfd, data, dlen);
|
size_t sent = send(sockfd, data, dlen, MSG_NOSIGNAL);
|
||||||
if(sent != dlen){
|
if(sent != dlen){
|
||||||
WARN("write()");
|
WARN("write()");
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user