Skip to content

Commit 960cac6

Browse files
committed
Update drv_ssdp.c
1 parent 370f617 commit 960cac6

File tree

1 file changed

+10
-40
lines changed

1 file changed

+10
-40
lines changed

src/driver/drv_ssdp.c

Lines changed: 10 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
// Commands register, execution API and cmd tokenizer
2020
#include "../cmnds/cmd_public.h"
2121
#include "../logging/logging.h"
22-
#include "../devicegroups/deviceGroups_public.h"
2322
#include "lwip/sockets.h"
2423
#include "lwip/ip_addr.h"
2524
#include "lwip/inet.h"
@@ -125,7 +124,6 @@ static void DRV_SSDP_CreateSocket_Receive() {
125124
struct sockaddr_in addr;
126125
struct ip_mreq mreq;
127126
int flag = 1;
128-
int broadcast = 1;
129127
int iResult = 1;
130128

131129
// create what looks like an ordinary UDP socket
@@ -137,31 +135,13 @@ static void DRV_SSDP_CreateSocket_Receive() {
137135
return ;
138136
}
139137

140-
if(broadcast)
138+
iResult = setsockopt(g_ssdp_socket_receive, SOL_SOCKET, SO_BROADCAST, (char *)&flag, sizeof(flag));
139+
if (iResult != 0)
141140
{
142-
143-
iResult = setsockopt(g_ssdp_socket_receive, SOL_SOCKET, SO_BROADCAST, (char *)&flag, sizeof(flag));
144-
if (iResult != 0)
145-
{
146-
addLogAdv(LOG_ERROR, LOG_FEATURE_HTTP,"DRV_SSDP_CreateSocket_Receive: failed to do setsockopt SO_BROADCAST\n");
147-
close(g_ssdp_socket_receive);
148-
g_ssdp_socket_receive = -1;
149-
return ;
150-
}
151-
}
152-
else{
153-
// allow multiple sockets to use the same PORT number
154-
//
155-
if (
156-
setsockopt(
157-
g_ssdp_socket_receive, SOL_SOCKET, SO_REUSEADDR, (char*) &flag, sizeof(flag)
158-
) < 0
159-
){
160-
addLogAdv(LOG_ERROR, LOG_FEATURE_HTTP,"DRV_SSDP_CreateSocket_Receive: failed to do setsockopt SO_REUSEADDR\n");
161-
close(g_ssdp_socket_receive);
162-
g_ssdp_socket_receive = -1;
163-
return ;
164-
}
141+
addLogAdv(LOG_ERROR, LOG_FEATURE_HTTP,"DRV_SSDP_CreateSocket_Receive: failed to do setsockopt SO_BROADCAST\n");
142+
close(g_ssdp_socket_receive);
143+
g_ssdp_socket_receive = -1;
144+
return ;
165145
}
166146

167147
// set up destination address
@@ -180,13 +160,7 @@ static void DRV_SSDP_CreateSocket_Receive() {
180160
return ;
181161
}
182162

183-
/* if(broadcast)
184-
{
185-
186-
}
187-
else*/
188163
{
189-
190164
// use setsockopt() to request that the kernel join a multicast group
191165
//
192166
mreq.imr_multiaddr.s_addr = inet_addr(ssdp_group);
@@ -235,15 +209,13 @@ void DRV_WEMO_Send_Advert_To(int mode, struct sockaddr_in *addr);
235209
void DRV_HUE_Send_Advert_To(struct sockaddr_in *addr);
236210

237211
void DRV_SSDP_SendReply(struct sockaddr_in *addr, const char *message) {
238-
239-
int nbytes;
240212
if (g_ssdp_socket_receive <= 0) {
241213
addLogAdv(LOG_ERROR, LOG_FEATURE_HTTP, "DRV_SSDP_SendReply: no socket");
242214
return;
243215
}
244216
// set up destination address
245217
//
246-
nbytes = sendto(
218+
sendto(
247219
g_ssdp_socket_receive,
248220
(const char*)message,
249221
strlen(message),
@@ -257,7 +229,7 @@ static void DRV_SSDP_Send_Advert_To(struct sockaddr_in *addr) {
257229

258230

259231
if (!advert_message){
260-
advert_maxlen = strlen(message_template) + 100;
232+
advert_maxlen = sizeof(message_template) + 99;
261233
advert_message = (char *)malloc(advert_maxlen+1);
262234
}
263235

@@ -309,15 +281,15 @@ static void DRV_SSDP_Send_Notify() {
309281
const char *myip = HAL_GetMyIPString();
310282

311283
if (!notify_message){
312-
notify_maxlen = strlen(notify_template) + 100;
284+
notify_maxlen = sizeof(notify_template) + 99;
313285
notify_message = (char *)malloc(notify_maxlen+1);
314286
}
315287

316288
snprintf(notify_message, notify_maxlen, notify_template, myip, g_ssdp_uuid);
317289

318290
int len = strlen(notify_message);
319291

320-
addLogAdv(LOG_EXTRADEBUG, LOG_FEATURE_HTTP,"DRV_SSDP_Send_Notify: space: %d msg:%d", strlen(notify_template) + 100, len);
292+
addLogAdv(LOG_EXTRADEBUG, LOG_FEATURE_HTTP,"DRV_SSDP_Send_Notify: space: %d msg:%d", notify_maxlen, len);
321293
addLogAdv(LOG_EXTRADEBUG, LOG_FEATURE_HTTP,"DRV_SSDP_Send_Notify: \r\n%s\r\n", notify_message);
322294

323295
// set up destination address
@@ -493,7 +465,6 @@ void DRV_SSDP_RunQuickTick() {
493465
(struct sockaddr *) &addr,
494466
&addrlen
495467
);
496-
udp_msgbuf[UDP_MSGBUF_LEN] = 0;
497468
if (nbytes <= 0) {
498469
//addLogAdv(LOG_INFO, LOG_FEATURE_HTTP,"nothing\n");
499470
return ;
@@ -505,7 +476,6 @@ void DRV_SSDP_RunQuickTick() {
505476
addLogAdv(LOG_EXTRADEBUG, LOG_FEATURE_HTTP,"Received %i bytes from %s",nbytes,inet_ntoa(((struct sockaddr_in *)&addr)->sin_addr));
506477
udp_msgbuf[nbytes] = 0;
507478
addLogAdv(LOG_EXTRADEBUG, LOG_FEATURE_HTTP,"data: %s",udp_msgbuf);
508-
udp_msgbuf[nbytes] = '\0';
509479

510480
/* we may get:
511481
M-SEARCH * HTTP/1.1

0 commit comments

Comments
 (0)