comparison mncc/extsock.c @ 28:660126bd5f59

themwi-mncc: fix one bug, add debug syslog output
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 28 Jun 2022 21:47:04 -0800
parents c6572f4c31d2
children
comparison
equal deleted inserted replaced
27:c6572f4c31d2 28:660126bd5f59
15 #include "../include/mncc.h" 15 #include "../include/mncc.h"
16 #include "../include/gsm48_const.h" 16 #include "../include/gsm48_const.h"
17 #include "struct.h" 17 #include "struct.h"
18 #include "gsm_call.h" 18 #include "gsm_call.h"
19 19
20 extern char *mncc_msg_name();
21
20 void 22 void
21 extsock_dec_refcount(conn) 23 extsock_dec_refcount(conn)
22 struct socket_conn *conn; 24 struct socket_conn *conn;
23 { 25 {
24 if (!conn->ncalls) { 26 if (!conn->ncalls) {
50 52
51 for (call = call_list_head; call; call = call->next) { 53 for (call = call_list_head; call; call = call->next) {
52 if (call->gc_flag) 54 if (call->gc_flag)
53 continue; 55 continue;
54 if (call->socket == conn) { 56 if (call->socket == conn) {
57 syslog(LOG_WARNING,
58 "clearing broken socket call: GSM callref 0x%x, socket ref 0x%x",
59 call->callref, call->socket_ref);
55 send_rel_on_broken_socket(call); 60 send_rel_on_broken_socket(call);
56 extsock_dec_refcount(conn); 61 extsock_dec_refcount(conn);
57 call->gc_flag = 1; 62 call->gc_flag = 1;
58 } 63 }
59 } 64 }
83 88
84 if (msglen < sizeof(struct gsm_mncc)) { 89 if (msglen < sizeof(struct gsm_mncc)) {
85 report_runt(msg); 90 report_runt(msg);
86 return; 91 return;
87 } 92 }
93 syslog(LOG_DEBUG, "Rx MNCC_SETUP_REQ from socket, callref=0x%x",
94 msg->callref);
88 call = find_socket_call(conn, msg->callref); 95 call = find_socket_call(conn, msg->callref);
89 if (call) { 96 if (call) {
90 syslog(LOG_ERR, 97 syslog(LOG_ERR,
91 "duplicate MNCC_SETUP_REQ from socket for callref 0x%x", 98 "duplicate MNCC_SETUP_REQ from socket for callref 0x%x",
92 msg->callref); 99 msg->callref);
107 114
108 if (msglen < sizeof(struct gsm_mncc)) { 115 if (msglen < sizeof(struct gsm_mncc)) {
109 report_runt(msg); 116 report_runt(msg);
110 return; 117 return;
111 } 118 }
119 syslog(LOG_DEBUG, "Rx %s from socket, callref=0x%x",
120 mncc_msg_name(msg->msg_type), msg->callref);
112 call = find_socket_call(conn, msg->callref); 121 call = find_socket_call(conn, msg->callref);
113 if (!call) { 122 if (!call) {
114 syslog(LOG_ERR, 123 syslog(LOG_ERR,
115 "MNCC message from ThemWi call socket: callref 0x%x not found", 124 "MNCC message from ThemWi call socket: callref 0x%x not found",
116 msg->callref); 125 msg->callref);
136 145
137 if (msglen < sizeof(struct gsm_mncc_rtp)) { 146 if (msglen < sizeof(struct gsm_mncc_rtp)) {
138 report_runt(msg); 147 report_runt(msg);
139 return; 148 return;
140 } 149 }
150 syslog(LOG_DEBUG, "Rx %s from socket, callref=0x%x",
151 mncc_msg_name(msg->msg_type), msg->callref);
141 call = find_socket_call(conn, msg->callref); 152 call = find_socket_call(conn, msg->callref);
142 if (!call) { 153 if (!call) {
143 syslog(LOG_ERR, 154 syslog(LOG_ERR,
144 "MNCC message from ThemWi call socket: callref 0x%x not found", 155 "MNCC message from ThemWi call socket: callref 0x%x not found",
145 msg->callref); 156 msg->callref);
158 union mncc_msg msg; 169 union mncc_msg msg;
159 int rc; 170 int rc;
160 171
161 rc = recv(conn->fd, &msg, sizeof msg, 0); 172 rc = recv(conn->fd, &msg, sizeof msg, 0);
162 if (rc < 4) { 173 if (rc < 4) {
163 if (conn->ncalls) 174 if (conn->ncalls) {
175 syslog(LOG_ERR, "ext socket broken with calls present");
164 broken_socket_clear_calls(conn); 176 broken_socket_clear_calls(conn);
177 } else
178 syslog(LOG_INFO, "normal closing of ext socket");
165 close(conn->fd); 179 close(conn->fd);
166 conn->fd = -1; 180 conn->fd = -1;
167 return; 181 return;
168 } 182 }
169 switch (msg.msg_type) { 183 switch (msg.msg_type) {